7 Stimmen

Python sqlite3 parametrisierte Drop-Tabelle

Ich habe ein Problem mit dropping sqlite3 Tabelle in Python. Ich verwende Standard sqlite3 Modul.

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

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

gibt mir OperationalError: near "?": syntax error

Wenn ich die sql zu:

sql = """ drop table table_name """

Es funktioniert gut.

12voto

mechanical_meat Punkte 154171

Sie können keine Parameter für Tabellennamen oder Spaltennamen verwenden.

Alternativ können Sie auch einen zweistufigen Prozess einrichten, z. B.:

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

Und wenn Sie das tun, möchten Sie vielleicht explizit angeben, welche Tabellen gelöscht werden können...

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X