使用 Pandas to_sql 时获取 sqlalchemy.exc.InternalError 异常值为 'cursor.execute(statement, parameters)'

Posted

技术标签:

【中文标题】使用 Pandas to_sql 时获取 sqlalchemy.exc.InternalError 异常值为 \'cursor.execute(statement, parameters)\'【英文标题】:Getting sqlalchemy.exc.InternalError with exception value of 'cursor.execute(statement, parameters)' when using Pandas to_sql使用 Pandas to_sql 时获取 sqlalchemy.exc.InternalError 异常值为 'cursor.execute(statement, parameters)' 【发布时间】:2022-01-03 07:50:46 【问题描述】:

使用 Pandas 的 to_sql 方法将我的 Pandas 数据帧写入 Redshift 时出现以下异常:

异常类型:

<class 'sqlalchemy.exc.InternalError'>

异常回溯:

MY-PATH/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute

异常值:

cursor.execute(statement, parameters)

代码:

dataframe.to_sql(TABLE-NAME, DB-CONNECTOR, schema='warehouse', method='multi', chunksize=5000, index=False, if_exists='append')

【问题讨论】:

【参考方案1】:

在我的场景中,问题出在我的 SQL DDL 中,其中我的一个列具有not null 的约束,但该列中正在写入数据表的某些值是空的。这在错误处理中并不直观,但如果其他人使用to_sql pandas 方法来创建/更新数据表,则想指出这一点。

【讨论】:

以上是关于使用 Pandas to_sql 时获取 sqlalchemy.exc.InternalError 异常值为 'cursor.execute(statement, parameters)'的主要内容,如果未能解决你的问题,请参考以下文章

使用 SqlAlchemy 和 cx_Oracle 将 Pandas DataFrame 写入 Oracle 数据库时加快 to_sql()

Pandas 和 SQLAlchemy:使用来自 engine.begin() 的连接时,带有 SQLAlchemy 2.0 fututre=True 的 df.to_sql() 会引发错误

Pandas to_sql 在重复主键上失败

为啥 dask 的“to_sql”比 pandas 花费更多时间?

使用 Pandas .to_sql 将 JSON 列写入 Postgres

在 pandas.to_sql() 中使用“可调用”方法的示例?