Python sqlite3参数化drop table

paj*_*ton 5 python sqlite parameterized-query sql-drop

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

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

sql = """ drop table ? """
self.conn.execute( sql, (u'table_name',) )
Run Code Online (Sandbox Code Playgroud)

给我 OperationalError: near "?": syntax error

当我sql改为:

sql = """ drop table table_name """
Run Code Online (Sandbox Code Playgroud)

它工作正常.

ber*_*nie 9

您不能使用表名称或列名称的参数.

或者,您可以将其分为两个步骤,例如:

sql = """ drop table %s """ % a_table_name
self.conn.execute( sql )
Run Code Online (Sandbox Code Playgroud)

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

TABLES_THAT_CAN_BE_DROPPED = ('table_a','table_b',)
if a_table_name in TABLES_THAT_CAN_BE_DROPPED:
    sql = """ drop table %s """ % a_table_name
    self.conn.execute( sql )
else:
    pass # handle creatively
Run Code Online (Sandbox Code Playgroud)