_mysql einsetzbar?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Sanji
User
Beiträge: 12
Registriert: Donnerstag 17. August 2006, 15:32
Kontaktdaten:

Dienstag 26. Dezember 2006, 21:20

Hallo,

ich versuche, meine Website auf Python umzustellen und wollte meine MySQL-Klasse, die ich in PHP verwende, möglichst identisch in Python übertragen. Leider musste ich feststellen, dass MySQLdb nicht wirklich viel bietet und die DB-API von Python im Endeffekt ja der kleinste gemeinsame Nenner vieler Datenbanken ist.

Was mich schon extrem stört, ist, dass ich nach einem execute() nicht die Anzahl der Spalten herausfinden kann. Dass das fehlt, sehe ich einfach nicht ein. Viele Dinge, die in PHP extrem einfach gehen, sind in Python in Hinblick auf MySQL nicht oder nur sehr umständlich möglich.

Gibt es Benchmarks, die zeigen, wie sich MySQLdb im Vergleich zu PHP im Zusammenspiel mit MySQL schlägt?

Ich spiele mit dem Gedanken, statt MySQLdb doch _mysql zu verwenden. Da scheint es ja mehr Funktionen zu geben - Kunststück, hat ja auch nix mit der DB-API zu tun. Spricht da irgendwas dagegen? Mal abgesehen von dem Aufwand, falls ein Wechsel des DBMS ansteht. Aber so schnell werde ich meinen Hoster nicht wechseln und dann auch sicher nicht unbedingt zu einem, der nur PostgreSQL anbietet.

Grüße,
Christoph
BlackJack

Dienstag 26. Dezember 2006, 22:21

Sanji hat geschrieben:Was mich schon extrem stört, ist, dass ich nach einem execute() nicht die Anzahl der Spalten herausfinden kann.
Schau Dir das `description` Attribut vom Cursor an.
Sanji
User
Beiträge: 12
Registriert: Donnerstag 17. August 2006, 15:32
Kontaktdaten:

Dienstag 26. Dezember 2006, 22:25

Na ja, okay, das muss einem ja mal gesagt werden. Kann man das nicht in rot oder so drüberschreiben?
BlackJack

Dienstag 26. Dezember 2006, 23:09

Einfach mal das DB-API 2 PEP durchlesen. Ist gleich das allererste was zu Cursor-Objekten drinsteht.
Sanji
User
Beiträge: 12
Registriert: Donnerstag 17. August 2006, 15:32
Kontaktdaten:

Mittwoch 27. Dezember 2006, 00:16

ja, ich hatte es ja "gründlich überflogen"... und da ich keine Eigenschaft analog zu rowcount sah... nahm ich an, das gebe es nicht. Wunderte mich auch irgendwie.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Samstag 30. Dezember 2006, 06:48

Wenn du

Code: Alles auswählen

cursor = conn.cursor(MySQLdb.cursors.DictCursor)
verwendest, bekommst du einen Cursor, dessen Rückgabewerte dicts sind, d.h. du kannst über die Spaltennamen anstelle von Indexnummern zugreifen.
`conn` ist hierbei ein bereits erstelltes Connection-Objekt.
Antworten