如何解决Psycopg2问题与插入行
尝试通过python插入时出现以下错误:
TypeError: not all arguments converted during string formatting
这是我要插入的第一行,例如:
(Timestamp('2019-01-31 00:00:00'),Timestamp('2018-10-03 00:00:00'),'APP-552498','Company Name Lawyer','Funded',36500,1095.0,1.35,49275.0,15509.0,251.0,'Daily',1825.0,196.31,78,0.0,'Law Offices',NaT,'','CO',8.4,'Company Name',0.7647,38003.68,7154.34,'West',33766.0,'N')
使用上述命令插入:
df_svc_vals = [tuple(x) for x in df.values]
c.execute("""INSERT INTO schema.table VALUES (%s)""",df_svc_vals[0])
c.executemany("""INSERT INTO schema.table VALUES (%s)""",df_svc_vals)
此外,当我实际将数据复制到单独的CSV并直接加载到DB中时,数据会正确插入。
我将前两列设置为日期类型,每列均以数字作为实数,并将字符串作为字符变化。另外,带有NaT的列是日期列,它只是一个空值(这是熊猫的外观)。
如何解决这个问题?
解决方法
您需要为每个值放置“%s”,因此您可以这样操作(它将产生“ INSERT INTO schema.table VALUES(%s,%s,%s,....%s )
"INSERT INTO schema.table VALUES ("+(",".join(["%s"]*len(df_svc_vals[o])))+")"
总的来说,你可以做这样的事情
c.executemany("INSERT INTO schema.table VALUES ("+(",".join(["%s"]*len(df_vals[0])))+")",df_svc_vals)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。