我正在尝试使用与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。
我似乎无法找到有关此错误原因及其含义的类似问题或信息。
任何方向都会很棒。 感谢
答案 0 :(得分:2)
看起来你正在尝试插入numpy整数,而psycopg2并不知道如何处理这些对象。您需要先将它们转换为普通的python整数。也许尝试在每个值上调用int()
函数...如果失败,请提供更多代码上下文。
答案 1 :(得分:2)
我也遇到了这个错误,然后意识到我试图将整数数据插入到SqlAlchemy Numeric列中,该列映射到float,而不是int。将违规的DataFrame列更改为float对我来说是个窍门:
df[col] = df[col].astype(float)
也许你也试图将整数数据插入非整数列?