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
MySQL Zugriff über uncompiliertes Python-Modul
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Diese Nachricht zersört sich in 5 Sekunden selbst ...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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 (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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
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

- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
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
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 ...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Dir hilft vielleicht das "pure Perl" Modul weiter, ich hab es mal rausgesucht: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.
http://search.cpan.org/dist/Net-MySQL/MySQL.pm
source: http://search.cpan.org/src/OYAMA/Net-My ... 9/MySQL.pm
Hm, so ganz klar ist mir noch nicht, was Du willst
. 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
...
Tabellar

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

Tabellar
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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.
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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 (former) Modvoice
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
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.
Grüße,
der Michel
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.

Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...