如何使用[Insert into…select]语句而不是[Insert into…vales]方法在postgres中插入元组

2024-06-25 23:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这一点,并试图在python中将数据插入到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)这样的元组,但不是这种格式。非常感谢!在


Tags: 数据fromimageidexecutepostgresselectseq
1条回答
网友
1楼 · 发布于 2024-06-25 23:27:31

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'],))

以下是文档中的相关部分:

For positional variables binding, the second argument must always be a sequence, even if it contains a single variable. And remember that Python requires a comma to create a single element tuple:

^{pr2}$

相关问题 更多 >