为什么不能将元组中的字符串作为字段名插入python中SQLlite3的table update命令中?

2024-05-19 14:31:28 发布

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

当我尝试在executemany()命令中使用元组中的stringvalue作为列名时,如下所示:

tup = ('field', 'value',)

cursor.executemany('UPDATE table SET ?=?', tup)

我得到一个SQlite.operationalerror错误地址:

   c.executemany('''UPDATE table SET ?=?''', tup)
sqlite3.OperationalError: near "?": syntax error

什么时候元组值不能在“=”之前插入而只能在后面插入??你知道吗


Tags: 命令fieldsqlitevalue地址错误tableupdate
1条回答
网友
1楼 · 发布于 2024-05-19 14:31:28

因为SQL参数表示一个文本值,所以需要使用引号来防止它被解释为SQL表、列名或文本。你知道吗

换句话说,您的field值将被引用:

UPDATE table SET "field"="value"

而不是

UPDATE table SET field="value"

您必须自己清理field的值,以确保它包含字段名,然后自己插入:

'UPDATE table SET %s=?' % ('field',)

清理是一个困难的问题;您也许应该使用SQLAlchemy这样的框架来以一种理智的方式为您生成SQL。你知道吗

相关问题 更多 >