Seite 1 von 1

MySQL in C + Windows + Python3

Verfasst: Freitag 28. Januar 2011, 13:12
von Gerenuk
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?!

Re: MySQL in C + Windows + Python3

Verfasst: Freitag 28. Januar 2011, 13:19
von Xynon1
Was genau geht dir denn nicht schnell genug ?
Normalerweise ist bei Datenbanken nie die Programmiersprache der Flaschenhals.

Re: MySQL in C + Windows + Python3

Verfasst: Freitag 28. Januar 2011, 13:24
von lunar
@Gerenuk: Oursql unterstützt Python 3.

Re: MySQL in C + Windows + Python3

Verfasst: Freitag 28. Januar 2011, 13:48
von Gerenuk
@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?

Re: MySQL in C + Windows + Python3

Verfasst: Freitag 28. Januar 2011, 20:26
von noisefloor
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

Re: MySQL in C + Windows + Python3

Verfasst: Freitag 28. Januar 2011, 21:14
von Gerenuk
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 :)

Re: MySQL in C + Windows + Python3

Verfasst: Freitag 28. Januar 2011, 21:43
von noisefloor
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