使用 psycopg2 模块将值插入数据库时出错



我正在尝试使用与sqlalchemy一起使用的pscycopg2模块将数据帧插入我的postgres数据库中。该过程将 excel 文件加载到 pandas 数据帧中,然后通过预定义的表架构将数据帧插入数据库。

我相信这些是相关的代码行:

post_meta.reflect(schema="users")
df = pd.read_excel(path) 
table = sql.Table(table_name, post_meta, schema="users")
dict_items = df.to_dict(orient='records')
connection.execute(table.insert().values(dict_items))

我收到以下错误:

<class 'sqlalchemy.exc.ProgrammingError'>, ProgrammingError("(psycopg2.ProgrammingError) can't adapt type 'numpy.int64'",)
数据

帧中的所有数据字段类型均为 int64。

我似乎找不到关于为什么此错误及其含义的类似问题或信息。

任何方向都会很棒。谢谢

看起来您正在尝试插入 numpy 整数,而 psycopg2 不知道如何处理这些对象。您需要先将它们转换为普通的 python 整数。也许尝试在每个值上调用 int() 函数......如果失败,请提供更多代码上下文。

我也遇到了这个错误,然后意识到我正在尝试将整数数据插入到 SqlAlchemy Numeric 列中,该列映射到浮点数,而不是 int。 将有问题的 DataFrame 列更改为浮点数对我来说是诀窍: df[col] = df[col].astype(float)

也许您也在尝试将整数数据插入非整数列?

最新更新