我知道这一点,并正在尝试将数据插入到此postgres表中,如下所示:
cur.execute('''INSERT INTO trademarks_image_mark (trademarks_id, image_mark_id)
SELECT currval('trademarks_id_seq'), id FROM image_mark WHERE
image_file_name LIKE %s''', data['ImageFileName'])
..但是我继续收到此错误:
TypeError:并非在字符串格式化期间转换了所有参数
有谁知道为什么会这样?我知道如何使用常规的Insert into ... values语句插入类似(%s)的元组,但不是这种格式。非常感谢和感谢!
如psycopg2 docs中所述,即使只有一个,您也必须按顺序传递插入查询的参数:
cur.execute('''INSERT INTO trademarks_image_mark (trademarks_id, image_mark_id)
SELECT currval('trademarks_id_seq'), id FROM image_mark WHERE
image_file_name LIKE %s''', (data['ImageFileName'],))
这是文档中的相关部分:
对于位置变量绑定,即使第二个参数包含一个变量,它也必须始终是一个序列。请记住,Python需要逗号来创建单个元素元组:
>>> cur.execute("INSERT INTO foo VALUES (%s)", "bar") # WRONG
>>> cur.execute("INSERT INTO foo VALUES (%s)", ("bar")) # WRONG
>>> cur.execute("INSERT INTO foo VALUES (%s)", ("bar",)) # correct
>>> cur.execute("INSERT INTO foo VALUES (%s)", ["bar"]) # correct
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句