scorpio18k
from sqlite3 import connect

name="TestTable"

conn = connect("data.db")
curs = conn.cursor()
curs.execute("CREATE TABLE IF NOT EXISTS :name (test TEXT PRIMARY KEY);",{"name":name})
conn.commit()
conn.close()

Błąd:
curs.execute("CREATE TABLE IF NOT EXISTS :name (test TEXT PRIMARY KEY);",{"name":name})
sqlite3.OperationalError: near ":name": syntax error

Co robię źle?

#python #sqlite
0
  • Najlepsze
  • Wszystkie komentarze
vipe
@scorpio18k: Nazwa tabeli nie może być parametrem.

@ZabiliMiZolwia: Zabezpieczyć (wyescape'ować) przed SQL Injection i jechać z tematem. Albo to, albo zmiana wymagań. Inaczej nie będzie.
2
Z.....a
@scorpio18k: Wydaje mi się, że po prostu nie da się sparametryzować nazwy tabeli
1
TMP_2137
TMP_2137
@scorpio18k: ten string wygląda źle, spróbuj f-stringa może
0
Z.....a
@TMP_2137: Wygląda tak jak zaleca DB-API. Użycie fstinga spowoduje podatność na sqlinjection
0
TMP_2137
TMP_2137
@ZabiliMiZolwia: aha, TIL
0