使用 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() 会引发错误
为啥 dask 的“to_sql”比 pandas 花费更多时间?