尝试使用 SQLAlchemy 的 to_sql 方法将 Pandas DataFrame 写入 MySQL 数据库时,您可能会遇到以下错误:类似于:
DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': Wrong number of arguments during string formatting
此错误表示正在执行的 SQL 查询存在差异。有趣的是,它建议尝试从 SQLite 数据库而不是 MySQL 中进行选择。
要纠正此问题并使用 SQLAlchemy 引擎和 mysqlconnector 与 MySQL 建立正确的连接,请按照以下步骤操作:
import pandas as pd import mysql.connector from sqlalchemy import create_engine # Create SQLAlchemy engine engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False) # Read and write using the engine connection data = pd.read_sql('SELECT * FROM sample_table', engine) data.to_sql(name='sample_table2', con=engine, if_exists='append', index=False)
此修改确保用于读取和写入的连接是连接到 MySQL 的 SQLAlchemy 引擎。它消除了使用原始连接的初始尝试,这可能会触发 SQLite 相关错误。
以上是为什么 Pandas'to_sql 在写入 MySQL 时会失败并出现'参数数量错误”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!