如何使用带有参数化占位符的sqlite3 Python库创建SQLite表?

时间:2018-12-29 17:35:26

标签: python sql database sqlite

从Python的文档(https://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.execute)中,我应该能够使用参数化的占位符执行SQL语句。但是,下面的代码不起作用。

import sqlite3

conn = 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 个答案:

答案 0 :(得分:1)

总之-不。您只能参数化值,不能参数化对象名称(在这种情况下,是表的名称)。如果您想做这样的事情,则必须诉诸字符串操作,例如:

c.execute("create table %s (foo text, bar text)" % ("table_name"))