Python sqlite3 reset parameter label

I have a problem with deleting sqlite3 table in python. I am using the standard sqlite3 module.

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

gives me OperationalError: near "?": syntax error

When I change sql to:

 sql = """ drop table table_name """ 

It works great.

+4
source share
1 answer

You cannot use parameters for table names or column names.

Alternatively, you can do this in a two-step process, for example:

 sql = """ drop table %s """ % a_table_name self.conn.execute( sql ) 

And if you do this, you can explicitly indicate which tables can be deleted ...

 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 
+6
source

Source: https://habr.com/ru/post/1347385/


All Articles