Hallo
Also ich habe eine MySQLDatenbank erstellt.
Diese heißt „usr_web17_1“, in der Tabelle "adressen" sind folgende Feldnamen „Id“, „Anrede“, „Name“ und „Vorname“. Da drin sind die Daten wie folgt eingefügt:
Id Anrede Name
1 Herr xyz
2 Herr Bla
3 Herr Test
Wie kann ich diese Daten der Datenbank mit Python in einer HTML Datei als Text ausgeben?
Python und MySQL
Hi,
Ab jetzt 5 Minuten
habs jetzt nicht getestet...
Aber das ganze nun in eine "richtige" HTML Seite zu bekommen sollte mit http://python.sandtner.org/viewtopic.php?t=2577 kein Problem sein
.begin(), .commit() und .rollback() kann man weglassen wenn die DB keine Transaktionen unterstützt. Ist zwar bei einem SELECT unötig, habs aber trotzdem dazu gefrickelt ...
MfG
Andreas
Ab jetzt 5 Minuten

Code: Alles auswählen
# Mein/Pfad/python.exe
print "Content-Type: text/html"
print
import cgitb; cgitb.enable()
import MySQLdb
Connection = MySQLdb.connect(host = DB_Host, user = DB_User, passwd = DB_Passwd, db = "usr_web17_1")
Cursor = Connection.cursor(MySQLdb.cursors.DictCursor)
Connection.begin()
try:
Cursor.execute("""SELECT * FROM adressen""")
Result = Cursor.fetchall()
except:
# Ich weiss macht man nicht so ;-)
Connection.rollback()
Result = None
else:
Connection.commit()
if Result:
for Entry in Result:
print """ %s - %s %s <br />""" % (Entry['Id'], Entry['Andrede'], Entry['Name'])
else:
print "Keine Eniträge"
Aber das ganze nun in eine "richtige" HTML Seite zu bekommen sollte mit http://python.sandtner.org/viewtopic.php?t=2577 kein Problem sein

.begin(), .commit() und .rollback() kann man weglassen wenn die DB keine Transaktionen unterstützt. Ist zwar bei einem SELECT unötig, habs aber trotzdem dazu gefrickelt ...
MfG
Andreas
Kann ich den Quelltext auch so schreiben?
Also wenn ich ein paar Befehle weglasse? oder funtzt der dann nicht mehr?
Code: Alles auswählen
Quelltext:
#!/usr/bin/python
print "Content-Type: text/html"
import MySQLdb
Connection = MySQLdb.connect(host = DB_Host, user = DB_User, passwd = DB_Passwd, db = "usr_web17_1")
Cursor = Connection.cursor
(MySQLdb.cursors.DictCursor)
Connection.begin()
try:
Cursor.execute("""SELECT * FROM adressen""")
Result = Cursor. fetch all()
exept:
print "Kann nicht zur Datenbank verbinden"
if Result:
for Entry in Result:
print """ %s - %s %s <br />""" % (Entry['Id'], Entry['Andrede'], Entry['Name'])
else:
print "Keine Einträge"
Du solltest das behandeln von Fehlern genauer definieren.
Deshalb schrieb ich auch:
für so eine Fehlerbehandlung würde mir am liebsten jeder zweiter Forum User den Kopf von meinen Schultern haun
Wird hier ganz sicher nicht auftretten, da die Verbindung hier schon aufgebaut ist...
Ein einfaches Except fängt auch alle anderen Fehler ab. z.B Fehler im Query. Somit wäre deine Meldung nicht mehr zutreffend.
Welche Fehler auftreten können sind hier: http://www.python.org/peps/pep-0249.html definiert.
MfG
Andreas
Deshalb schrieb ich auch:
Code: Alles auswählen
except:
# Ich weiss macht man nicht so Wink

Code: Alles auswählen
except:
print "Kann nicht zur Datenbank verbinden"
Ein einfaches Except fängt auch alle anderen Fehler ab. z.B Fehler im Query. Somit wäre deine Meldung nicht mehr zutreffend.
Welche Fehler auftreten können sind hier: http://www.python.org/peps/pep-0249.html definiert.
MfG
Andreas
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
Hallo,
wie macht ihr das ergebnis['id'] euch einen Wert zurueck gibt?
Bei mir geht das nicht, ich kann nur mit dem index also ergebnis[0] zugreifen.
Eine weitere Frage, wenn ich einfach print result mache,
bekomme ich sowas:
Wofuer steht dabei das L? Das Feld ist unsigned int.
Besten Dank,
Rob
Edit (Leonidas): Code in Tags gesetzt, da andernfalls nicht lesbar.
wie macht ihr das ergebnis['id'] euch einen Wert zurueck gibt?
Bei mir geht das nicht, ich kann nur mit dem index also ergebnis[0] zugreifen.
Code: Alles auswählen
def select_ids(self):
c = self.connection.cursor()
c.execute("SELECT id from data where id < '100'")
#make list of all results
result = c.fetchall()
for x in result:
print x[0]
c.close()
Eine weitere Frage, wenn ich einfach print result mache,
bekomme ich sowas:
Code: Alles auswählen
((1L,), (2L,), (3L,), (4L,), (5L,), (6L,), (7L,), (8L,), (9L,), (10L,),
(11L,), (12L,), (13L,), (14L,), (15L,), (16L,), (17L,), (18L,), (19L,), (20L,),
(21L,), (22L,), (23L,), (24L,), (25L,), (26L,), (27L,), (28L,), (29L,), (30L,),
(31L,), (32L,), (33L,), (34L,), (35L,), (36L,), (37L,), (38L,), (39L,), (40L,),
(41L,), (42L,), (43L,), (44L,), (45L,), (46L,), (47L,), (48L,), (49L,), (50L,),
(51L,), (52L,), (53L,), (54L,), (55L,), (56L,), (57L,), (58L,), (59L,), (60L,),
(61L,), (62L,), (63L,), (64L,), (65L,), (66L,), (67L,), (68L,), (69L,), (70L,),
(71L,), (72L,), (73L,), (74L,), (75L,), (76L,), (77L,), (78L,), (79L,), (80L,),
(81L,), (82L,), (83L,), (84L,), (85L,), (86L,), (87L,), (88L,), (89L,), (90L,),
(91L,), (92L,), (93L,), (94L,), (95L,), (96L,), (97L,), (98L,), (99L,))
Besten Dank,
Rob
Edit (Leonidas): Code in Tags gesetzt, da andernfalls nicht lesbar.
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
sorry, habs aus versehen zweimal eingetragen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
L steht für Long.flyingfish hat geschrieben:Wofuer steht dabei das L? Das Feld ist unsigned int.
Code: Alles auswählen
print type(10L)
print type(10)
print type(int(10L))
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo.
c = self.connection.cursor(MySQLdb.cursors.DictCursor)

MfG
Andreas
Das wurd hier schon sehr oft besprochen:flyingfish hat geschrieben:wie macht ihr das ergebnis['id'] euch einen Wert zurueck gibt?
c = self.connection.cursor(MySQLdb.cursors.DictCursor)

MfG
Andreas
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
Danke euch beiden, das werde ich ausprobieren!
flyingfish
flyingfish