Pandas 与 to_sql 的 ODBC 连接
Posted
技术标签:
【中文标题】Pandas 与 to_sql 的 ODBC 连接【英文标题】:Pandas to ODBC connection with to_sql 【发布时间】:2021-05-28 12:08:34 【问题描述】:我正在尝试通过pyodbc
将 pandas DataFrame 导出到 MS Access 表中。
conn = pyodbc.connect(r'Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=my_db.accdb;')
df.to_sql('test', conn, index=False)
DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;':
('42S02', "[42S02] [Microsoft][ODBC Microsoft Access Driver]
The Microsoft Access database engine cannot find the input table or query 'sqlite_master'.
Make sure it exists and that its name is spelled correctly. (-1305) (SQLExecDirectW)")
sqlite_master
?这是哪里来的?
【问题讨论】:
【参考方案1】:.to_sql()
期望第二个参数是 SQLAlchemy Connectable
对象或 DBAPI Connection
对象。如果是后者,那么 pandas 假定它是一个 SQLite 连接。
你需要使用sqlalchemy-access方言。
(披露:我保持这种方言。)
【讨论】:
好的,谢谢。它似乎不能作为 conda 包提供,而且由于我的工作 PC 上没有安装 VS Studio 来编译 pip 安装,这看起来像是死路一条。 如果您已经安装了 pyodbc 并且可以通过 conda 使用 SQLAlchemy,那么pip install --no-deps sqlalchemy-access
可能会成功。
是的,成功了!我不知道这个技巧,谢谢!以上是关于Pandas 与 to_sql 的 ODBC 连接的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 和 SQLAlchemy:使用来自 engine.begin() 的连接时,带有 SQLAlchemy 2.0 fututre=True 的 df.to_sql() 会引发错误
为啥 dask 的“to_sql”比 pandas 花费更多时间?
Pandas DataFrame.to_sql() 函数是不是需要后续的 commit()?