Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:python_mysql

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
python:python_mysql [2011/09/20 13:13]
2007 angelegt
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 ====
  
-<source lang="python">+<code python>
 import MySQLdb import MySQLdb
 conn=MySQLdb.connect(user="root",passwd="",db="somedb") conn=MySQLdb.connect(user="root",passwd="",db="somedb")
Zeile 8: Zeile 8:
 allezeilen=curs.fetchall() allezeilen=curs.fetchall()
 conn.close() conn.close()
-</source>+</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: 
  
-<source lang="python">  
-table="foobar" 
-cursor.execute(""" 
-          select * from %s where blabla = 'S'""", 
-          (table)) 
-</source> 
  
-funzt nicht, aber dieses hier: 
  
-<source lang="python"> 
-table="foobar" 
-cursor.execute(""" 
-          select * from %s where blabla = 'S'""" % 
-          table) 
-</source> 
  
-Hier meine Erklärung: +<note important>SQL-Parameter sollten immer als Tupel an die execute-methode übergeben werden, und nicht als zusammengesetzter String!</note>
- +
-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  +
- +
-<source lang="sql"> +
-SELECT * from 'foobar' +
-</source> +
- +
-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: +
- +
-<source lang="python"> +
-table="foobar" +
-blabla="einText" +
-nummer=34 +
-cursor.execute(""" +
-          select * from """ + table + """ where blabla = %s and nummer = %s""", +
-          (blabla,nummer)) +
-</source> +
- +
-Es wird dabei IMMER der Operator %s benutzt, also auch bei Integer.+
  
python/python_mysql.1316517216.txt.gz · Zuletzt geändert: 2011/09/20 13:13 von 2007