7

我在 python 中删除 sqlite3 表时遇到问题。我正在使用标准sqlite3模块。

self.conn = sqlite3.connect(...)

sql = """ drop table ? """
self.conn.execute( sql, (u'table_name',) )

给我OperationalError: near "?": syntax error

当我更改sql为:

sql = """ drop table table_name """

它工作正常。

4

1 回答 1

12

您不能将参数用于表名或列名。

或者,您可以将其设为两步过程,例如:

a_table_name = "table_a"
sql_stmt = f"""DROP TABLE {a_table_name}"""
self.conn.execute(sql_stmt)

如果您这样做,您可能需要明确指定可以删除哪些表......

TABLES_THAT_CAN_BE_DROPPED = ('table_a','table_b',)
if a_table_name in TABLES_THAT_CAN_BE_DROPPED:
    # use code snippet from above 
else:
    pass # handle creatively
于 2011-04-09T20:46:01.720 回答