Python+MySQL

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Franzi
User
Beiträge: 2
Registriert: Dienstag 16. Mai 2006, 07:57

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!
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

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 ;).
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

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()
joa nää python is toll :D
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich würde statt while und fetchone ehr for line in fetchall machen... Es sei denn es sind super viele Ergebnisse...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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.
Zuletzt geändert von gerold am Mittwoch 17. Mai 2006, 16:08, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Franzi
User
Beiträge: 2
Registriert: Dienstag 16. Mai 2006, 07:57

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
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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.
Zuletzt geändert von keppla am Mittwoch 17. Mai 2006, 15:40, insgesamt 1-mal geändert.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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
TUFKAB – the user formerly known as blackbird
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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.
TUFKAB – the user formerly known as blackbird
Antworten