Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
from pysqlite2 import dbapi2 as sqlite
con = sqlite.connect("C:\sqli")
cur = con.cursor()
cur.execute("INSERT INTO words (voc) values ('teststring')")
con.commit()
test = "test"
cur.execute("INSERT INTO words (voc) values (%s)") % test
So sollte es eigentlich funktionieren. Du musst in einem String Platzhalter angeben (fangen % an und hören mit einem Buchstaben auf, s steht z.B. für String) und dann am Ende des Codes ein % und die passende Variable. Falls du mehrere Platzhalter hast, muss die Variablen als Tupel angeben. Reihenfolge beachten!
test = "test"
cur.execute("INSERT INTO words (voc) values (%s)") % test
So sollte es eigentlich funktionieren. Du musst in einem String Platzhalter angeben (fangen % an und hören mit einem Buchstaben auf, s steht z.B. für String) und dann am Ende des Codes ein % und die passende Variable. Falls du mehrere Platzhalter hast, muss die Variablen als Tupel angeben. Reihenfolge beachten!
Kleine Korrektur bevor sich noch jemand den Wolf sucht
test = "test"
cur.execute("INSERT INTO words (voc) values (%s)" % test)
Seid ihr sicher, das es so richtig ist??? Ich denke nicht, weil Python per String-Operation das ganze zusammen fügt und somit kein SQL-Escaping der Werte vorgenommen wird.
Damaskus hat geschrieben:Also bei mir funktioniert es so.
Natürlich funktioniert es so *auch*, aber wie ich versucht hab klar zu machen, übernimmt in dieser Variante Python das Einsetzten der Variable test in des SQL-Kommando. Es ist allerdings besser, das der DB-Schnittstelle zu überlassen, weil dann die Werte so escaped werden, das SQL-Injection wirkungslos sind.