Seite 1 von 1

MySQLDB Anbindung in Python3

Verfasst: Montag 11. April 2011, 20:57
von daemonTutorials
Ich habe eine Idee!
Könnte man nicht mit einer Socketverbindung zum MySQL Server die SQL-Strings senden? Oder ist das komplizierter?

Re: MySQLDB Anbindung in Python3

Verfasst: Montag 11. April 2011, 21:09
von deets
Ja, ist es. Was du willst ist ein in purem Python geschriebener MySQL-Client. Keine Ahnung ob es sowas gibt, aber AFAIK nicht.

Der Grund besteht darin, dass das Protokoll, welches MySQL verwendet, proprietaer ist. Wie die anderer Datenbanken auch. Also zB Formate fuer Datentypen, Austausch von Authorisierungsinformationen, Konfiguration der Verbindung usw usf. Kannst ja mal wireshark auf dein lokales Interface loslassen und mitschneiden, was da so an Verkehr auf dem MySQL-Port ankommt.

Und abschliessend noch etwas zum nachdenken: Ohne deinen Einfallsreichtum zu sehr in Frage stellen zu wollen - wenn's wirklich nur eine Socket-Verbindung waere, glaubst du nicht, das haette schonmal wer kurz hinprogrammiert?

Re: MySQLDB Anbindung in Python3

Verfasst: Montag 11. April 2011, 21:12
von BlackJack
@daemonTutorials: Komplizierter als was? Ein fertiges Modul zu benutzen?

Du kannst nicht einfach SQL 1:1 an einen MySQL-Server schicken. Du musst schon das Protokoll implementieren, was so ein Server erwartet. Und dann ist es wahrscheinlich nicht das effizienteste wirklich alles in SQL abzuwickeln. Zum Beispiel kann es Sinn machen keine Werte in den SQL-Abfragen zu haben, sondern nur Platzhalter. Dann kann das DBMS, sofern es das beherrscht, die SQL-Abfrage einmal kompilieren und optimieren und für verschiedene Werte verwenden.

Letztendlich möchte man ja auch eine DB API 2.0-kompatible Schnittstelle haben und nicht sein eigenes Süppchen kochen.

Re: MySQLDB Anbindung in Python3

Verfasst: Donnerstag 14. April 2011, 19:28
von daemonTutorials
Interessant. Vielen Dank für die Tipps!

Re: MySQLDB Anbindung in Python3

Verfasst: Donnerstag 14. April 2011, 22:57
von lunar
@deets: Das Transport-Protokoll von MySQL ist vollständig dokumentiert, außerdem ist MySQL frei. Es gibt mit MySQL Connector/Python auch eine DBAPI-Schnittstelle für MySQL, die ausschließlich in Python implementiert ist.

Re: MySQLDB Anbindung in Python3

Verfasst: Donnerstag 14. April 2011, 23:07
von deets
@lunar

proprietaer != geschlossen. Ich kannte bis dato nur MySQLdb, und der benutz die C-client-libraries, womit das Protokoll abgehandelt ist. Gut zu wissen, dass es andere Implementationen gibt. Aber die "Idee" des OP, einfach mal nen telnet auf den MySQL-Port zu machen & nen SQL-String abzufeuern ist dann doch was wenig.

Re: MySQLDB Anbindung in Python3

Verfasst: Donnerstag 14. April 2011, 23:16
von lunar
@deets: So? Dann kläre mich doch bitte auf über die Bedeutung des Worts „proprietär“, und dessen Bedeutung und Sinn in Deinem Beitrag ...

Re: MySQLDB Anbindung in Python3

Verfasst: Donnerstag 14. April 2011, 23:27
von deets
http://de.wikipedia.org/wiki/Propriet%C3%A4r

Und ich denke, aus dem Kontext geht klar hervor, dass ich genau das meinte, was in 3. beschrieben ist. Mir ist die GPL-Lizenz von MySQL durchaus bekannt....

Aber gerne nochmal: mir ging es darum darzulegen, dass es nicht reicht, einen socket aufzumachen, und "select * from tabelle" reinzuschreiben. Aber das habe ich doch eigentlich recht klar gesagt, oder?

Re: MySQLDB Anbindung in Python3

Verfasst: Samstag 7. Mai 2011, 14:36
von noisefloor
Hallo,

"Datenbankspezifisch" ist in diesem Zusammenhang wohl wirklich besser (und "richtiger") als "proprietär". :-)

Gruß, noisefloor