Python+MySQL

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

Python+MySQL

Beitragvon Franzi » Dienstag 16. Mai 2006, 08:13

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

Beitragvon Masaru » Dienstag 16. Mai 2006, 08:56

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:

Beitragvon JanDMC » Mittwoch 17. Mai 2006, 09:36

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 17. Mai 2006, 10:12

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 17. Mai 2006, 11:57

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

Beitragvon Franzi » Mittwoch 17. Mai 2006, 14:40

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

Beitragvon keppla » Mittwoch 17. Mai 2006, 15:15

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.
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Mittwoch 17. Mai 2006, 15:19

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 17. Mai 2006, 15:39

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.
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Mittwoch 17. Mai 2006, 15:43

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

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]