【问题标题】:Pandas to ODBC connection with to_sqlPandas 与 to_sql 的 ODBC 连接
【发布时间】: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?这是哪里来的?

【问题讨论】:

    标签: python pandas ms-access pyodbc


    【解决方案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 可能会成功。
    • 是的,成功了!我不知道这个技巧,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多