MySQL in C + Windows + Python3

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Gibt es momentan eine Möglichkeit auf MySQL zu connecten mit einem schnellen C Modul unter Windows und für Python3.1?
Ich habe die Python mysql-connector, aber denke es könnte auch schneller gehen. Ich habe schon in Listen geschaut, aber auf den ersten Blick sieht es nicht so aus, dass es diese Kombo gäbe?!
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Was genau geht dir denn nicht schnell genug ?
Normalerweise ist bei Datenbanken nie die Programmiersprache der Flaschenhals.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
lunar

@Gerenuk: Oursql unterstützt Python 3.
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

@Xynon:
Hmm, meinste? Mag sein. Ich dachte halt weil mysql-connector Python ist, ist er langsamer. Aber die Datenmenge ist schon groß und kann sein, dass es eher am MySQL liegt. Oder kann man an der Interaction noch was optimieren? Ich habe eigentlich nur sehr lange SELECTs und "for x in cursor".

oursql hatte ich gefunden und jetzt warte ich bis der Admin mir mysql-c-connector draufmacht :) Ist das dann C?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

> Hmm, meinste? Mag sein.
Ist i.d.R. so. Das Programm muss eine Verbindung zu DB aufbauen, die muss den Query ausführen, was ggf. mit I/O verbunden ist und dann das Ergebnis zurück liefern.
In der gleichen Zeit hat selbst die langsamste Skript-Sprache etliche Befehle ausgeführt.

Oder andersherum gesagt: Das ist eine Stelle, wo man die Optimierung auch auf unbestimmte Zeit in die Zukunft verschieben kann.

Anders sähe es ggf. aus, wenn du ein KV-Store nutzt, was alle Daten im RAM hält.

Gruß, noisefloor
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Ah OK. Gut zu wissen.

Und ist
for x in c.execute("select ...")
eigentlich schon optimiert? Also er muss da nicht irgendwie immer neu verbinden?

Naja, dann dauerts halt einfach 500000 Zeilen in eine Objekt-Hierarchie einzulesen :)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Gerenuk hat geschrieben:Und ist
for x in c.execute("select ...")
eigentlich schon optimiert?
AFAIK ist das Iterieren über cursor.execute(...) nicht Teil der offiziellen Python DB API 2.0, die meisten kompatiblen Modulen unterstützten es aber. Sofern für cursor.execute(...) sich die Werte erst im Verlauf der Iteration holt sollte das ok sein.
Gerenuk hat geschrieben: Also er muss da nicht irgendwie immer neu verbinden?
Nee, so wie so nicht. Die Connection baust du ja vorher auf - und auch erst hinterher hoffentlich wieder ab. ;-)

Gruß, noisefloor
Antworten