python:python_mysql
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
python:python_mysql [2013/10/29 11:58] – jenad | python:python_mysql [2024/08/07 13:39] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 14: | Zeile 14: | ||
- | immer wieder ein Grund zum Verzweifeln, | ||
- | <code python> | ||
- | table=" | ||
- | cursor.execute(""" | ||
- | select * from %s where blabla = ' | ||
- | (table,)) | ||
- | </ | ||
- | |||
- | funzt nicht, aber dieses hier: | ||
- | |||
- | <code python> | ||
- | table=" | ||
- | cursor.execute(""" | ||
- | select * from %s where blabla = ' | ||
- | table) | ||
- | </ | ||
- | |||
- | Hier meine Erklärung: | ||
- | |||
- | Der Komma-Operator als Teil der execute-Methode wandelt automatisch übergebene Variablen (als Tupel) in SQL-konforme Werte, aus " | ||
- | |||
- | Aus " | ||
- | |||
- | <code sql> | ||
- | SELECT * from ' | ||
- | </ | ||
- | |||
- | ist eben ein ungültiger SQL-Befehl (Tabellenname in einfachen Hochkommas). | ||
- | |||
- | Wenn man also auch den Tabellennamen als Variable übergeben möchte, muß man sich mit einem verketteten String aushelfen: | ||
- | |||
- | <code python> | ||
- | table=" | ||
- | blabla=" | ||
- | nummer=34 | ||
- | cursor.execute(""" | ||
- | select * from """ | ||
- | (blabla, | ||
- | </ | ||
- | |||
- | Es wird dabei IMMER der Operator %s benutzt, also auch bei Integer. | ||
<note important> | <note important> | ||
python/python_mysql.1383044329.txt.gz · Zuletzt geändert: 2024/08/07 13:35 (Externe Bearbeitung)