Bequemer SQL-Datenbankzugriff
Verfasst: Donnerstag 14. August 2003, 13:34
Hallo
nachdem der Datenbankzugriff in Python nicht so schön ist wie in Perl oder PHP, habe ich dafür eine eigene Funktion geschrieben. Mit dieser Funktion ist es möglich, dank Dictonary, auf die Werte der SQL-Abfrage mit dem Spaltenname und der ZeilenNr zuzugreifen.
Verbesserungsvorschläge erwünscht!
Gruß
Michael B.
nachdem der Datenbankzugriff in Python nicht so schön ist wie in Perl oder PHP, habe ich dafür eine eigene Funktion geschrieben. Mit dieser Funktion ist es möglich, dank Dictonary, auf die Werte der SQL-Abfrage mit dem Spaltenname und der ZeilenNr zuzugreifen.
Verbesserungsvorschläge erwünscht!
Gruß
Michael B.
Code: Alles auswählen
#!/usr/local/bin/python
import MySQLdb
import sys
# Datenbankeinstellungen
try:
conn = MySQLdb.connect(host="127.0.0.1", user="root", passwd="", db="testdatenbank")
cursor = conn.cursor()
except MySQLdb.Error, e:
print "Datenbankfehler %d: %s" % (e.args[0], e.args[1])
sys.exit(1)
#-------------------------------------------------------------------------------------
# SQL-Funktion
#-------------------------------------------------------------------------------------
def sql_query(sql, cursor):
# Erstelle Dictonary
ergebnis = {"<NULL>": ("")}
# Führe Abfrage aus
try:
cursor.execute(sql)
erg = cursor.fetchall()
spalten = cursor.description
except MySQLdb.Error, e:
print "-> SQL-Fehler!", e
return "", 0
# Schreibe Ergebnis in Dictonary
spaltenZaehler = -1
for spalte in spalten:
spaltenZaehler = spaltenZaehler + 1
inhalt = []
for i in range(0,len(erg)):
tmp = erg[i][spaltenZaehler]
inhalt.insert (i, tmp)
ergebnis[spalte[0]] = inhalt
del ergebnis["<NULL>"]
return ergebnis, len(erg)
# Hauptprogramm
erg, zeilenanzahl = sql_query ("select Adresse1, Strasse, AuftragNr from Auftrag limit 5", cursor)
for zeilenNr in range(0, zeilenanzahl):
print erg["Adresse1"][zeilenNr] + " | " + erg["Strasse"][zeilenNr] + " | " + erg["AuftragNr"][zeilenNr]
#-------------------------------------------------------------------------------------
# Beispielausgabe
#-------------------------------------------------------------------------------------
# Firma1 | Musterstrasse 3 |
# Firma1 | Musterstrasse 3 | 000001
# Firma2 | Berliner Str. 12 | 100010
# Firma2 | Berliner Str. 12 | 100030
# Firma2 | Berliner Str. 12 | 100040
# Programmende
conn.close()
sys.exit(0)