brauche Starthilfe

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Montag 18. August 2008, 16:35

Hallo Python-Forum,

ich experimentiert seit kurzem ein bisschen mit Python-Webentwicklung herum, und würde jetzt auch gerne mal eine Datenbank einbinden.

Bei meinem Hoster (greatnet.de) steht mir eine MySQL-Datenbank zur verfügung.


Ich weiß jetzt leider nicht mehr wie ich diese MySQL-Datenbank in einem Python-Skript aufrufen kann.

Kann mir jemand Tipps dazu geben??

LG tjuXx
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Montag 18. August 2008, 16:43

http://sourceforge.net/projects/mysql-python
Die Seite sollte dir als Info reichen und hier noch eine kleines minimal Beispiel:

Code: Alles auswählen

import MySQLdb

con = MySQLdb.connect(
    host="localhost",
    db="test",
    user="test",
    )
cur = con.cursor()
cur.execute("FROM test SELECT * WHERE name = %s", "Ich")
print cur.fetchall()
#con.commit()
Irgendwann (oder auch sofort, wenn du ORMs magst) schau dir mal http://www.sqlalchemy.org/ an.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 18. August 2008, 17:19

Wobei ``SELECT *`` eigentlich selten eine richtig gute Idee ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Pumeluk2
User
Beiträge: 26
Registriert: Samstag 24. März 2007, 11:24

Montag 18. August 2008, 17:24

Leonidas hat geschrieben:Wobei ``SELECT *`` eigentlich selten eine richtig gute Idee ist.
Endlich mal ein Thema bei dem ich mitreden kann :)

Definitiv Jein zu deinem Statement: Wenn du alle Felder einlesen willst, und weisst in welcher Reihenfolge die Felder geliefert werden, _dann_ ist select * eine gute Idee ;)

Ansonsten gilt natürlich das select * auf dem DB-Server und eine Selektierung der benötigten Felder auf dem Client absoluter Nonsens ist.[/OT]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 18. August 2008, 17:34

Pumeluk2 hat geschrieben:Definitiv Jein zu deinem Statement: Wenn du alle Felder einlesen willst, und weisst in welcher Reihenfolge die Felder geliefert werden, _dann_ ist select * eine gute Idee ;)
Und wann ist sowas der Fall? Wenn du auf Werte zugreifen willst, dann weißt du welche es sind. Wenn du mittels * zugreifst, dann musst du dir die Werte aus der Antwort herauspicken und dort kann die Reihenfolge anders sein als du erwartest (also Indizes die dann nicht auf das zeigen was du wolltest), denn man kann mit ALTER TABLE durchaus Spalten modifizieren. Der DictCursor niveliert das Problem etwas, aber auch so ist das Herausholen von unbenötigten Spalten aus der Datenbank schlicht unnütz.

Anders ist es etwa wenn du alle Spalten brauchst etwa für SQL Interfaces oder für Backups, da ist dann ``*`` wohl etwas praktischer als in den Tabellenmetadaten nachzuschlagen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Montag 18. August 2008, 17:37

Leonidas hat geschrieben:Wobei ``SELECT *`` eigentlich selten eine richtig gute Idee ist.
Es handelt sich um ein Beispiel und nicht um ein SQL Tutorial. ;-)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 18. August 2008, 18:03

``SELECT *`` ist IMHO immer eine ganz blöde Idee, weil es nicht nur an Transparenz mangelt, sondern bei einer Änderung im Model alles in die Binsen geht. Wenn man die Felder explizit angibt, die man verwendet, sind bspw. zusätzliche Felder in einer Tabelle komplett ohne Nebenwirkungen, die Anpassungen am Code erfordern.

Was für ein Dialekt ist ``FROM x SELECT y`` eigentlich? ;)
Antworten