Seite 1 von 1

Python+MySQL

Verfasst: Dienstag 16. Mai 2006, 08:13
von Franzi
Hey!
Ich hab da ,mal ne frage wie kann ich denn mysql datenbanken in python verwenden, also ich meine wie ich in python eingegebene daten in einer datenbank speichern kann??
vielen dank für eure hilfe!

Verfasst: Dienstag 16. Mai 2006, 08:56
von Masaru
Gib mehrere Möglichkeiten, von Command-Line tool parsen, über ODBC bis hin zu Bibliotheken wie MySQL for Python (DBAPI 2.0 supported).

Aber, mal etwas anderes .... hast du schonmal die Suchen-Funktion hier vom Forum benutzt? Da bekommst du dutzende Threads über MySQL ;).

Verfasst: Mittwoch 17. Mai 2006, 09:36
von JanDMC
glaube das wird dir alles erklären

mfg Jan

Code: Alles auswählen

import  MySQLdb

DROP   = "DROP TABLE IF EXISTS tabelle"
CREATE = """CREATE TABLE tabelle (
                                item_id        int auto_increment primary key,
                                bestellungen    int,
                                menge           int,
                                bestand          int
                                lagerkosten       int,
                                bestellkosten     int,
                                gesamtkosten      int


                               )"""
INSERT1 = "INSERT INTO tabelle VALUES (NULL,'10','16', '34','10','16', '34')"

SELECT  = "SELECT * FROM tabelle"


# das Hauptprogramm
if (__name__ == '__main__'):
    


    myconn = MySQLdb.connect(host = ip, user =benutzer , passwd = password, db = datenbank)     # mit der Datenbank verbinden
    cursor = myconn.cursor()
   # cursor.execute(DROP)                # Tabelle loeschen
    cursor.execute(CREATE)              # Tabelle erzeugen
    cursor.execute(INSERT1)             # 4 Eintraege vornehmen
    cursor.execute(INSERT2)
    cursor.execute(INSERT3)
    cursor.execute(INSERT4)

    cursor.execute(SELECT)              # Datensaetze anzeigen
    while True:
        satz = cursor.fetchone()        # eine Zeile aus der Ergebnismenge
        if not satz: break
        for kette in satz:              # in Komponenten zerlegen
            print kette, '\t  ',        # KEIN Zeilenvorschub
        print                           # naechste Zeile, d.h. NUR Zeilenvorschub

    cursor.execute(UPDATE)              # Preise um 10 % anheben
    print

    cursor.execute(SELECT)              # Datensaetze anzeigen
    while True:
        satz = cursor.fetchone()        # eine Zeile aus der Ergebnismenge
        if not satz: break
        for kette in satz:              # in Komponenten zerlegen
            print kette, '\t  ',        # KEIN Zeilenvorschub
        print                           # naechste Zeile, d.h. NUR Zeilenvorschub

    cursor.close()                      # housekeeping
    myconn.close()

Verfasst: Mittwoch 17. Mai 2006, 10:12
von jens
Ich würde statt while und fetchone ehr for line in fetchall machen... Es sei denn es sind super viele Ergebnisse...

Verfasst: Mittwoch 17. Mai 2006, 11:57
von gerold
Hi!

Und hier die feine, englische Art ;-)

Code: Alles auswählen

for row in iter(cursor.fetchone, None):
    for column in row:
        print column
Auch bei vielen Zeilen performant und trotzdem einfach umzusetzen.

lg
Gerold
:-)

EDIT: Klammern entfernt. Damit das niemand falsch abschreibt.

Verfasst: Mittwoch 17. Mai 2006, 14:40
von Franzi
Vielen Dank leute! :wink:
hatte auch schon mal bei suchen nachgeguckt aber auf anhinb nicht das richtige gefunden... :( hab es bis jetzt auch immer so gemacht, aber sagt mal, mit variablen geht das nicht oder?das klappt nämlich irgendwie nicht :? dass jemand außerhab des quelltextes mit tkinter einen neuen eintrag macht oder etwas löscht? :?: Na gutti also danke nochmal

Verfasst: Mittwoch 17. Mai 2006, 15:15
von keppla
aber sagt mal, mit variablen geht das nicht oder?das klappt nämlich irgendwie nicht
Ähh, wie meinen? Was soll mit Variablen nicht gehen? meinst du vielleicht prepared statements?
dass jemand außerhab des quelltextes mit tkinter einen neuen eintrag macht oder etwas löscht?
Auch diese Frage ist nicht direkt klar. Ich versuchs mal, so zu beantworten:
Es ist imho egal, was für weitere Bibliotheken (z.B. tkinter) du sonst noch nutzt. Einträge machen oder löschen kann jeder, der an die Datenbank rankommt und authentifiziert wird.
Wie derjenige an die Datenbank kommt (z.B. per "$mysql -u root -p") spielt dabei keine Rolle.

Verfasst: Mittwoch 17. Mai 2006, 15:19
von mitsuhiko
gerold hat geschrieben:

Code: Alles auswählen

for row in iter(cursor.fetchone(), None):
    for column in row:
        print column
Auch bei vielen Zeilen performant und trotzdem einfach umzusetzen.
Eher so:

Code: Alles auswählen

EMPTY_RESULT = ()

for row in iter(cursor.fetchone, EMPTY_RESULT):
    for column in row:
        print column

Verfasst: Mittwoch 17. Mai 2006, 15:39
von gerold
blackbird hat geschrieben:

Code: Alles auswählen

EMPTY_RESULT = ()

for row in iter(cursor.fetchone, EMPTY_RESULT):
    for column in row:
        print column
Hi blackbird!

Natürlich - das mit den Klammern war schlampig, aber None geht OK.

mfg
Gerold
:-)

Verfasst: Mittwoch 17. Mai 2006, 15:43
von mitsuhiko
gerold hat geschrieben:Natürlich - das mit den Klammern war schlampig, aber None geht OK.
Da war ich mir jetzt nicht mehr sicher. Könnte schören leere results werden durch ein leeres Tupel repräsentiert. Da kann ich mich jetzt aber irren.