我正在通过anaconda使用jupyter和python3.6.4。我希望能够处理和存储数据从python到mysql数据库。我用来做这件事的图书馆是 pymysql
以及 sqlalchemy
.
目前,我正在用 wamp
( mysql version : 5.7.21
),稍后我将它应用到远程服务器。
数据库创建功能:
def create_raw_mysql_db(host,user,password,db_name):
conn=pymysql.connect(host=host,user=user,password=password)
conn.cursor().execute('DROP DATABASE '+db_name)
conn.cursor().execute('CREATE DATABASE '+db_name+' CHARACTER SET utf8mb4')
函数将Dataframe转换为mysql中的关系表:
def save_raw_to_mysql_db(df,table_name,db_name,if_exists,username,password,host_ip,port):
engine = create_engine("mysql+pymysql://"+username+":@"+host_ip+":"+port+"/"+db_name+"?charset=utf8mb4")
df.to_sql(name=table_name,con=engine,if_exists=if_exists,chunksize=10000)
执行代码:
# DB info & credentials
host = "localhost"
port = "3306"
user= "root"
password= ""
db_name= "raw_data"
exade_light_tb = "exade_light"
# A simple dataframe
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),columns=['a', 'b', 'c', 'd', 'e'])
create_raw_mysql_db(host,user,password,db_name)
save_raw_to_mysql_db(df,exade_light_tb,db_name,"replace",user,password,host,port)
运行此代码时收到的警告:
c:\用户….:警告:(1366,“不正确的字符串值:'\x92\xe9t\xe9',对于第481行的“variable\u value”列)result=self.\u query(query)
通过这些线程:/questions/34165523/questions/47419943questions/2108824/,我可以断定问题一定与utf8字符集有关,但我使用utf8mb4创建数据库,而不是使用django(应该也需要根据questions/2108824/配置)。
我的问题:
这个警告到底是如何影响我的数据及其完整性的?
为什么即使我将字符集从utf8改为utf8mb4,它似乎也不能解决警告问题?我需要进一步配置吗?在这种情况下,我应该记住哪些参数才能将相同的配置应用于远程服务器?
我如何摆脱这个警告?
附件:
暂无答案!
目前还没有任何答案,快来回答吧!