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

テーブル名や列名にパラメーターを使用することはできません。

または、次のように 2 段階のプロセスにすることもできます。

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 に答える