如何使用带有参数化占位符的 sqlite3 Python 库创建 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

但是如果我不使用参数化占位符,它就可以工作。


牛魔王的故事
浏览 280回答 1
1回答

慕姐4208626

一句话——不。您只能参数化值,不能参数化对象名称(在本例中为表名称)。如果你想做这样的事情,你必须求助于字符串操作,例如:c.execute("create&nbsp;table&nbsp;%s&nbsp;(foo&nbsp;text,&nbsp;bar&nbsp;text)"&nbsp;%&nbsp;("table_name"))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python