Ich benutze das MySQLdb-Modul in Python zum Schreiben von SQL-Anweisungen. Es fällt mir schwer, Variablen so zu verwenden, wie ich es möchte. Hier ist meine Arbeit:Verwenden von execute()/executemany() für SQL-Anweisungen in Python
stmt = "\
INSERT INTO Table1\
(name, status)\
SELECT (:name1, :status1)\
FROM dual\
WHERE NOT EXISTS (\
SELECT 1 FROM Table1\
WHERE name =(:name1))"
dic = {"name1":"Bob", "status1":"Active"}
dbcursor.executemany(stmt, dic)
dbconnection.commit()
print("Insertion to Table1 committed\n\n")
Das funktioniert nicht, ich Rollback schließlich mit der Fehlermeldung not all arguments converted during string formatting
. Wenn ich die Wörterbuchwerte fest codiere, funktioniert die Einfügung gut. Können Sie mich auf die richtige Art der Verwendung von Variablen anstelle von fest codierten Werten hinweisen?
Tipp: Verwenden Sie '" "" ... "" "' Triple Zitate und Sie müssen nicht alle diese Backslashes verwenden .. –
Sicher gibt es eine Ausnahme, wenn alles zurückgerollt wird? –
@MartijnPieters ja, es ist "nicht alle Argumente während der Formatierung von Strings konvertiert" –