Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:python_mysql

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
python:python_mysql [2011/09/20 13:14]
127.0.0.1 Externe Bearbeitung
python:python_mysql [2017/11/15 09:02] (aktuell)
2007 [MySQLdb: übergabe von parametern an cursor.execute()]
Zeile 1: Zeile 1:
-== allgemeine Syntax ==+==== allgemeine Syntax ====
  
 <code python> <code python>
Zeile 10: Zeile 10:
 </code> </code>
  
-== MySQLdb: übergabe von parametern an cursor.execute() ==+==== MySQLdb: übergabe von parametern an cursor.execute() ====
  
-immer wieder ein Grund zum Verzweifeln, was bedeuten diese zwei Möglichkeiten der Übergabe von Variablen an einen SQL-Befehl: 
  
-<code python>  
-table="foobar" 
-cursor.execute(""" 
-          select * from %s where blabla = 'S'""", 
-          (table)) 
-</code> 
  
-funzt nicht, aber dieses hier: 
  
-<code python> 
-table="foobar" 
-cursor.execute(""" 
-          select * from %s where blabla = 'S'""" % 
-          table) 
-</code> 
- 
-Hier meine Erklärung: 
- 
-Der Komma-Operator als Teil der execute-Methode wandelt automatisch übergebene Variablen (als Tupel) in SQL-konforme Werte, aus "foobar" wird also 'foobar', und eine 34 bleibt eine 34, wenn die Variable ein Integer ist. 
- 
-Aus "foobar" wird also 'foobar', und  
- 
-<code sql> 
-SELECT * from 'foobar' 
-</code> 
- 
-ist eben ein ungültiger SQL-Befehl (Tabellenname in Hochkommas). 
- 
-Wenn man also auch den Tabellennamen als Variable übergeben möchte, muß man sich mit einem verketteten String aushelfen: 
- 
-<code python> 
-table="foobar" 
-blabla="einText" 
-nummer=34 
-cursor.execute(""" 
-          select * from """ + table + """ where blabla = %s and nummer = %s""", 
-          (blabla,nummer)) 
-</code> 
  
-Es wird dabei IMMER der Operator %s benutztalso auch bei Integer.+<note important>SQL-Parameter sollten immer als Tupel an die execute-methode übergeben werdenund nicht als zusammengesetzter String!</note>
  
python/python_mysql.1316517293.txt.gz · Zuletzt geändert: 2013/04/26 11:06 (Externe Bearbeitung)