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)
