从 Python 的文档(https://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.execute),我应该能够使用参数化占位符执行 SQL 语句。然而,下面的代码不起作用。import sqlite3conn = sqlite3.connect("temp.db")c = conn.cursor()c.execute("create table ? (foo text, bar text)", ("table_name",))conn.commit()conn.close()我收到一个错误:Traceback (most recent call last): File "main.py", line 6, in <module> c.execute("create table ? (foo text, bar text)", ("table_name",))sqlite3.OperationalError: near "?": syntax error但是如果我不使用参数化占位符,它就可以工作。
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
一句话——不。您只能参数化值,不能参数化对象名称(在本例中为表名称)。如果你想做这样的事情,你必须求助于字符串操作,例如:
c.execute("create table %s (foo text, bar text)" % ("table_name"))
添加回答
举报
0/150
提交
取消