尝试使用to_sql将pandas数据框写入MySQL表。以前一直使用flavor ='mysql',但是它将在未来贬值,并希望开始过渡到使用SQLAlchemy引擎。使用SQLAlchemy写入MySQL数据库,使用SQLAlchemy,to_sql
示例代码:
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)
cnx = engine.raw_connection()
data = pd.read_sql('SELECT * FROM sample_table', cnx)
data.to_sql(name='sample_table2', con=cnx, if_exists = 'append', index=False)
读取工作正常,但to_sql有一个错误:
DatabaseError:执行失败的SQL 'SELECT名字从SQLITE_MASTER其中type =' 表” AND名字= ';':字符串格式化过程中的参数数量错误
为什么它看起来像试图使用sqlite?什么是sqlalchemy与mysql连接的正确使用,特别是mysql.connector?
我也尝试过将引擎作为连接传递,并且给了我一个引用无游标对象的错误。
data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
>>AttributeError: 'Engine' object has no attribute 'cursor'
你必须通过发动机本身,而不是原始连接(在未来的SQLAlchemy的连接也将是可能的,但不是原始连接)。你可以看看是否解决了这个问题? – joris
啊,我看到你已经试过:-)你能在这种情况下显示你得到的错误吗? – joris
使用引擎时:AttributeError:'引擎'对象没有属性'游标' –