MySQLDB Anbindung in Python3

Du hast eine Idee für ein Projekt?
Antworten
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Ich habe eine Idee!
Könnte man nicht mit einer Socketverbindung zum MySQL Server die SQL-Strings senden? Oder ist das komplizierter?
LG Maik
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?
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.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Interessant. Vielen Dank für die Tipps!
LG Maik
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.
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.
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 ...
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?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

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

Gruß, noisefloor
Antworten