Datenbank erstellen Problem beim print

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
pysbf26
User
Beiträge: 7
Registriert: Samstag 15. Oktober 2011, 14:47

Hallo,

ich beschäftige mich seit einer Woche mit Python und habe folgendes Problem:
Es soll eine Datenbank mit 4 usern erstellt werden. Bei mir druckt der dann aber nur eine aus. Wo steckt der Fehler?

Code: Alles auswählen

connection = sqlite3.connect("fdat.db")
cursor = connection.cursor ()

#Datensatz erzeugen
cursor = connection.cursor ()

#Tabelle erzeugen
sql = "CREATE TABLE fdat (" \
      "login TEXT, " \
      "password TEXT, " \
      "user TEXT, " \
      "vorname TEXT, " \
      "name TEXT)"
cursor.execute(sql)

#Datensatz erzeugen
sql = "INSERT INTO fdat VALUES ('rasburnd', "\
      "'g46b5', 'user01', 'Max', 'Abendstern')"
cursor.execute(sql)
connection.commit()

#Datensatz erzeugen
sql = "INSERT INTO fdat VALUES ('mdad',"\
      "'xfgj5d', 'user02', 'Mirijam', 'donad')"
cursor.execute(sql)
connection.commit()

#Datensatz erzeugen
sql = "INSERT INTO fdat VALUES ('dbande',"\
      "'g07856k', 'user03', 'Dirk', 'Bdande')"
cursor.execute(sql)
connection.commit()

#Datensatz erzeugen
sql = "INSERT INTO fdat VALUES ('rbosch', "\
      "'u785oTf7', 'user04', 'Rufus', 'bosch')"
cursor.execute(sql)
connection.commit()

connection = sqlite3.connect("fdat.db")
cursor = connection.cursor ()

#sql-Abfrage
sql ="SELECT * FROM fdat"

print(sql)
cursor.execute(sql)

for dsatz in cursor:
    print(dsatz[0],dsatz[1],dsatz[2], dsatz[3], dsatz[4])
    connection.close()

#Verbindung beenden
connection.close()
Zuletzt geändert von Anonymous am Samstag 15. Oktober 2011, 15:25, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@pysbf26: Es wird nur ein Datensatz ausgegeben *und* eine sehr aussagekräftige Fehlermeldung. Denk da einfach mal drüber nach.
pysbf26
User
Beiträge: 7
Registriert: Samstag 15. Oktober 2011, 14:47

hab was geändert und jetzt druckt er die datensätze hintereinander 12 bis 13 mal aus.
Wie drucke ich das denn nun richtig aus? :oops:
Fehlermeldung kommt keine mehr......
BlackJack

@pysbf26: Mach einfach den Fehler nicht mehr, der dazu führt, dass die Daten so oft ausgegeben werden.

Mal ernsthaft: Wie soll man bei der Faktenlage etwas sinnvolles sagen können!?
pysbf26
User
Beiträge: 7
Registriert: Samstag 15. Oktober 2011, 14:47

Die "Hilfestellung" hier war nicht sehr hilfreich für einen Anfänger.
Habs selbst gelöst und was im Code geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

pysbf26 hat geschrieben:Die "Hilfestellung" hier war nicht sehr hilfreich für einen Anfänger.
Habs selbst gelöst und was im Code geändert.
LOL... denk doch mal drüber nach, was wir mit "etwas geändert" anfangen können ;-)

Ach ja, Du willst Dich dringend mit Listen auseinandersetzen - das oben gezeigte Anlegen der Datensätze ist momentan reine Copy&Paste-Programmierung.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
pysbf26
User
Beiträge: 7
Registriert: Samstag 15. Oktober 2011, 14:47

Ja ich würde gerne eine richtige Liste anlegen. Die man später auch ändern kann.
Das macht man doch mit sqlite3 oder nicht?
Ich kenn mich da echt nicht aus :roll:
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

pysbf26 hat geschrieben:Ja ich würde gerne eine richtige Liste anlegen. Die man später auch ändern kann.
Eine Liste ist eine grundlegende Datenstruktur in Python und hat mit einer Datenbank nichts zu tun. Du solltest mal das offizielle Tutorial durcharbeiten, dann lernst Du das kennen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten