【问题标题】:Psycopg2 INSERT variables, string format errorPsycopg2 INSERT 变量,字符串格式错误
【发布时间】:2018-06-28 19:40:18
【问题描述】:

我正在尝试更新 Postgresql 表的一行。我正在使用 Psycopg2 和 Python3。

我收到错误: "TypeError: 在字符串格式化期间并非所有参数都被转换"

代码: self.cursor.executemany("INSERT INTO blacklisted_ips (ip, source_id, date_created, date_modified) VALUES (%s, %s, %s, %s);", ["address_list"])

ip、source_id、date_created、date_modified 是列名。

传递元组列表 address_list 样本数据: ('223.223.202.183', 29, '2018-06-28 12:32:02', '2018-06-28 12:32:02')

我不知道为什么会出现此错误。我猜它以“VALUES”之后的占位符为中心。任何帮助是极大的赞赏。

【问题讨论】:

  • 你的代码是["address_list"]。这意味着您正在传递一个包含单个元素的列表,即字符串address_list。您的意思是改为传递变量 address_list 吗?
  • 啊好的,我需要传递指向列表的变量。我有:def add_ips(self, address_list):

标签: python psycopg2


【解决方案1】:

假设address_list是要插入的值列表,可以直接传给executemany

self.cursor.executemany("INSERT INTO blacklisted_ips (ip, source_id, date_created, date_modified) VALUES (%s, %s, %s, %s);", address_list)

(注意address_list 周围没有引号和括号。)

【讨论】:

  • 非常感谢。那是我的问题,变量周围的括号。
  • 很高兴我能帮上忙!您可以选中答案旁边的框以接受它。
猜你喜欢
  • 1970-01-01
  • 2012-09-28
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多