首页 > 解决方案 > 将熊猫数据框导出到 sql 服务器时如何修复 ProgrammingError?

问题描述

尝试对 sql 执行数据帧时遇到编程错误。



import pymysql 

import sqlalchemy

database_username = 'myname'
database_password = 'password'
database_ip       = 'some host:port'
database_name     = 'myname'
database_connection = sqlalchemy.create_engine('mysql+pymysql://{0}:{1}@{2}/{3}'.
                                               format(database_username, database_password, 
                                                      database_ip, database_name), pool_recycle=1, pool_timeout=57600).connect()

DF.to_sql(con=database_connection, name='IOS', schema=None, if_exists='replace', index=False, index_label=None, dtype=None)

我希望将数据导出到远程数据库。实际结果是:我被告知存在语法错误,但插入子句和参数对我来说似乎很有意义......

ProgrammingError: (pymysql.err.ProgrammingError) 
(1064, u"You have an error in your SQL syntax; 
check the manual that corresponds to your MariaDB server version for the right syntax to use near '5bf27ed941f800ea780c2c5425ca1c96''),
(b''cfca791b5a1e18af1724ae8d42e85ee0''),
(b''' at line 1") 
[SQL: u'INSERT INTO `IOS` (`MD5`) VALUES (%(MD5)s)'] 
[parameters: 
({'MD5': '5bf27ed941f800ea780c2c5425ca1c96'}, 
{'MD5': 'cfca791b5a1e18af1724ae8d42e85ee0'},
 {'MD5': '4cb1e3d62ff5a96628fa97f1e966f723'}, 
{'MD5': '9e35c083694bd8fd12e5c229c2a0008c'}, 
{'MD5': '4bba3f25817cff7c441d13e3bc5ace5e'})] 

我发现我可以在上面使用的代码中导出某些类型的数据帧,但是它不适用于 bigquery 结果生成的数据帧。这是上面代码中引用的数据帧 DF 中的内容:

%bq query -n md5query
SELECT id, MD5
FROM `dataset.IOS` 

MD5 = md5query.execute().result().to_dataframe()
DF = MD5['MD5']

标签: pythonmysqlpandas

解决方案


推荐阅读