MySQL Zugriff über uncompiliertes Python-Modul

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Montag 20. November 2006, 10:28

Hallo Leute,

ich habe mal wieder eine Frage bezüglich Pythonmodulen, die aufgrund gegebener Restriktionen nur aus Python-Code (incl. Standardbibliotheken) bestehen und für die Version 2.2 verfügbar sind.

Gibt es die Möglichkeit, über Standard- oder Pythoncodemodule auf existierende MySQL-Datenbanken zuzugreifen? MySQLdb hilft mir also nicht weiter, es sei denn, es gibt davon eine Python-Code-Version.

Ich hoffe ihr könnt mir weiterhelfen! Vielen Dank für eure Unterstützung,

der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 20. November 2006, 10:56

Ich glaube nicht, dass jemand sich so etwas ausgedacht hat. Aber wenn du schmarzhafte Lösungen magst, kannst du versuchen die MySQL-Libraries per ctypes anzusprechen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 20. November 2006, 11:42

Auch MySQLdb kommuniziert doch mit dem SQL Server über sockets, oder nicht?
Somit könnte man das doch auch in pure Python erledigen. Ob das noch niemand versucht hat?

Mal ein wenig googlen... ...Es gibt schon hin und wieder die Frage danach, aber keine Lösung gefunden... Es gibt da wohl ein pure Perl Modul...

Ich gehe mal davon aus, das du an existierende Daten aus der MySQL DB ansprechen möchtest. Ansonsten gibt es schon ein paar pure Python Datenbanken... z.B. http://www.pythonweb.org/projects/snakesql/ oder http://gadfly.sourceforge.net

Wäre wohl schon interessant auf socket basierend eine pure MySQLdb modul zu schreiben :)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Dienstag 21. November 2006, 07:48

Hi,

Es handelt sich um ein paar existierende Datenbanken mit wenigen millionen Datensätzen, aus denen ich nur ein paar auslesen und eine Baumstruktur aufbauen möchte.
Gadfly und SnakeSQL sind genau die beiden Favoriten, mit denen ich mich gerade beschäftige und die für eine Python-Lösung in Frage kämen. Der SQL-Wortschatz von Gadfly ist natürlich umfangreicher, es bietet aber keine NULL-Werte und In-Memory Datenbanken gehen bei den Datenmengen auch in die Knie. :-(

Momentan nutze ich den Workaround, dass ich die Datenbankabfragen über os.system und sql-Skripte durchführe. Da man sich dafür aber auf die MySQL Workstation setzen muss, ist dieser Weg nicht der ergonomischste.

Die Idee die MySQLdb-Schnittstelle genauer zu untersuchen und die Socketverbindung nachzubauen ist gar nicht so schlecht, ich werde mir das mal genauer ansehen.

Ich danke euch sehr für eure Anregungen, Mühe und Hilfe und bin ganz Ohr, wenn ihr noch weitere Erkenntnisse habt.

Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 21. November 2006, 09:59

Michael Schneider hat geschrieben:Die Idee die MySQLdb-Schnittstelle genauer zu untersuchen und die Socketverbindung nachzubauen ist gar nicht so schlecht, ich werde mir das mal genauer ansehen.
Dir hilft vielleicht das "pure Perl" Modul weiter, ich hab es mal rausgesucht:
http://search.cpan.org/dist/Net-MySQL/MySQL.pm
source: http://search.cpan.org/src/OYAMA/Net-My ... 9/MySQL.pm

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Dienstag 21. November 2006, 12:51

Hm, so ganz klar ist mir noch nicht, was Du willst :oops: . Einmal geht es um
pure Python DBs (Gadfly...), dann um DbAPIs um auf MySQL zuzugreifen,
um dort ein paar Datensätze auszulesen, ev. in Python geschrieben...
Die vorhandenen DbAPIs sind meist optimiert und haben auch C Erweiterungen.
Ich bin mir da nicht sicher, ob "pure Python" da effizienter sein soll :roll: ...

Tabellar
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 21. November 2006, 13:04

Effizient sicherlich nicht. Aber wenn man keine Binären Module einsetzten darf, aus welchem Grund auch immer...

So wie ich es verstanden hab, stecken die zu verarbeitenden Daten in einer MySQLdb... Wenn man sie ausgelesen hat, kann man die Daten auch in eine andere DB schmeißen.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 21. November 2006, 23:47

Ich vermute mal, dass die ganzen DB-Module deswegen auf C-Bibliotheken wie libpq setzen, weil diese Bibliotheken das socket-Protokoll kapseln. Somit kann sich das Protokoll ändern, die gegen die Module gelinkten Module funktionieren weiterhin. Wenn man nun das Socket-Protokoll nachbaut, müsste man auch auf die Änderungen an ebendiesem Protokoll ein Auge haben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Mittwoch 22. November 2006, 19:20

Hallo!

Ja, in der Firma, für die ich arbeite, steht mir nur unter HP-UX Python 2.2 zur Verfügung. Keine Erweiterungen und keine Compilation von C-Modulen.

Gadfly und SnakeSQL haben nichts mit dem Zugriff auf die MySQL Datenbank zutun, ich meinte nur, dass ich die für eigene SQL-Datenbanken unter den o.g. Restriktionen im Auge habe.

Da es die Perl-Variante schon gibt und auf unseren Maschinen auch Perl installiert ist, kann ich vielleicht diesen Umweg nehmen. Also über die System-Methode.

Fragen wie/ähnlich "warum nimmst Du dann nicht gleich Perl" werden kategorisch ignoriert. :P

Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 7. Dezember 2006, 12:12

@Michael Schneider: Und? Drüfen wir bald auf ein pure-Python-MySQL Modul hoffen??? :lol:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten