I have a problem with dropping sqlite3 table in python. I am using 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 fine.
To drop a table from a SQLite3 database using python invoke the execute() method on the cursor object and pass the drop statement as a parameter to it.
In this syntax, you specify the name of the table which you want to remove after the DROP TABLE keywords. SQLite allows you to drop only one table at a time. To remove multiple tables, you need to issue multiple DROP TABLE statements. If you remove a non-existing table, SQLite issues an error.
Deleting data using pythonCreate a cursor object by invoking the cursor() object on the (above created) Connection object. Then, invoke the execute() method on the cursor object, by passing an DELETE statement as a parameter to it.
The TRUNCATE TABLE statement is used to remove all records from a table. SQLite does not have an explicit TRUNCATE TABLE command like other databases. Instead, it has added a TRUNCATE optimizer to the DELETE statement. To truncate a table in SQLite, you just need to execute a DELETE statement without a WHERE clause.
You cannot use parameters for table names nor column names.
Alternatively you could make it a two-step process, e.g.:
a_table_name = "table_a"
sql_stmt = f"""DROP TABLE {a_table_name}"""
self.conn.execute(sql_stmt)
And if you're doing that you may want to explicitly specify which tables can be deleted...
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With