mysql-connector + Django

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

Hallo Zusammen.

Python Version: 2.7
OSX: 10.6.5
MySQL Server Version: 5.5.8

Nachdem ich nun bereits 12 Stunden versucht habe MySQL-Python auf meinem Mac zum Laufen zu bekommen, habe ich den Mysql-Connector (http://forums.mysql.com/read.php?50,398 ... msg-398540) gefunden.

Nun möchte ich gerne mit Django arbeiten, aber ich kann diesen Mysql-Connector nicht als ENGINGE nutzen.

Error:

Code: Alles auswählen

django.core.exceptions.ImproperlyConfigured: 'mysql-connector' isn't an available database backend. 
Try using django.db.backends.XXX, where XXX is one of: 
'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3' 
Error was: No module named mysql-connector.base 
Anschließend habe ich das django mysql-connector backend von 'jerith' versucht. (https://github.com/jerith/connector-django-mysql)
Wenn ich nun aber myconnpy_django_backend als ENGINGE nutzen möchte, bekomme ich den folgenden Error:

Code: Alles auswählen

raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) 
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/chris/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib 
Referenced from: /Users/chris/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so 
Reason: image not found 
Anscheinend versucht Eclipse/Django zwanghaft, die MySQL-Python Library zu nutzen, welche ich ja nicht verwenden kann.

Irgendwelche Ideen? :)

Danke & Gruß,
Chris
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Äh Django hat ein MySQL-Backend eingebaut, warum verwendest du das nicht?
BlackJack

@Dauerbaustelle: Weil diese Anbindung `MySQLdb` vorraussetzt, was chrjs auf dem Mac nicht installiert bekommt!? Das steht doch alles in dem Beitrag.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

BlackJack hat geschrieben:@Dauerbaustelle: Weil diese Anbindung `MySQLdb` vorraussetzt, was chrjs auf dem Mac nicht installiert bekommt!? Das steht doch alles in dem Beitrag.
Nö, da steht gar nix von MySQLdb. Den letzten Satz habe ich jetzt nicht so interpretiert, dass da irgendwelche C-Extensions auf seinem Mac nicht laufen. Da stand nur, er könne "die MySQL-Lib nicht verwenden".

Anyway, dieses "Pure-Python"-Backend versucht, `mysql` zu importieren. Ich vermute mal, dass das eben genau jene problematisch C-Extension ist. Ist also gar nicht so pure, das Ding...
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

Hallo Zusammen.

Sorry für die Verwirrung.
MySQL-Python = MySQLdb, diese bekomme ich nicht zum Laufen. Von Compile Errors über die falsche Architektur bis hin zum "Image not found" Error hab ich wohl alles durch. Habe wie gesagt wirklich insgesamt knapp 12 Stunden dafür aufgewendet. Zuzüglich eine Neuinstallation weil ich ausschließen wollte, dass es an irgendeinem Versions-Konflikt liegt.

Ich hoffe nun wirklich, dass Jemand eine schöne Lösung hat, damit ich mit dem mysql-connector in Verbindung mit Django endlich glücklich werden kann. ;)

Danke & Gruß,
Chris
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Versuch mal das hier: http://anthonyscherba.com/site/blog/dja ... nstall-mac

Sollte das auch nicht klappen: Wie installierst du denn MySQLdb? Läuft das überhaupt auf Mac generell?
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

Hallo,

der von dir genannte Link behandelt die MySQL-Python Library (MySQLdb).

Wenn ich diese Library nutzen möchte, bekomme ich den von mir genannten "Image not Found" Error. (2. Fehlermeldung die ich beschrieben habe.)

Diese Library muss mal per python setup.py build + install installieren. Diese wird dann mit gcc kompiliert und installiert. Woher der Image not Found Error kommt, konnte mir Google bisher leider nicht beantworten.

Gruß,
Chris
lunar

Dauerbaustelle hat geschrieben:
BlackJack hat geschrieben:@Dauerbaustelle: Weil diese Anbindung `MySQLdb` vorraussetzt, was chrjs auf dem Mac nicht installiert bekommt!? Das steht doch alles in dem Beitrag.
Nö, da steht gar nix von MySQLdb.
Fürs Protokoll: "MySQL-Python" ist der Sourceforge-Projektname von mysqldb. Im Beitrag steht MySQLdb also bereits im ersten Satz.

@OP: Es gibt mit oursql noch einen weiteren Adapter für MySQL, der ausschließlich in Python implementiert ist. Möglicherweise gibt es ja für diesen eine funktionierende Datenbankanbindung.
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

lunar hat geschrieben: @OP: Es gibt mit oursql noch einen weiteren Adapter für MySQL, der ausschließlich in Python implementiert ist. Möglicherweise gibt es ja für diesen eine funktionierende Datenbankanbindung.
Puhhh...Guten Abend.

Also, irgendwie habe ich das Pech wirklich gepachtet. Oursql habe ich compiliert und es wurde lt. Log erfolgreich installiert. Beim Import habe ich aber wieder einen altbekannten, ähnlichen Fehler wie weiter oben schon.
>>> import oursql
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.6/site-packages/oursql.so, 2): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Library/Python/2.6/site-packages/oursql.so
Reason: image not found
>>> ^D
chris$ file /Library/Python/2.6/site-packages/oursql.so
/Library/Python/2.6/site-packages/oursql.so: Mach-O universal binary with 3 architectures
/Library/Python/2.6/site-packages/oursql.so (for architecture i386): Mach-O bundle i386
/Library/Python/2.6/site-packages/oursql.so (for architecture ppc): Mach-O bundle ppc
/Library/Python/2.6/site-packages/oursql.so (for architecture x86_64): Mach-O 64-bit bundle x86_64

chris$ file /usr/local/mysql/lib/libmysqlclient.16.dylib
/usr/local/mysql/lib/libmysqlclient.16.dylib: Mach-O 64-bit dynamically linked shared library x86_64
Sieht doch alles okay aus, wo verflucht hängt es denn nun noch? :(
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Hast du libmysqlclient richtig installiert? Ist bei deinem System alle 64bitig installiert?
Zumindest MySQLdb braucht das um zu laufen, bricht beim compilen / installieren aber nicht ab wenn es nicht verfügbar ist, wenn ich mich richtig erinnere.
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

Also ich hatte die mysql-connector-c libs "installiert". Habe den Inhalt der jeweiligen Ordner (/lib und /include) in den /usr/local/mysql/lib bzw. /include Ordner kopiert. Die README hat leider nichts hergegeben und ein Setup oder ähnliches gab es nicht.

Ist das korrekt gewesen?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich kenne mich mit Mac OS X überhaupt nicht aus. Deshalb sollte mal ein Mac erfahrener User was dazu sagen.

Aber für 10.6 gibts keine Vorkompilierten Pakete auf Mysql.com das könnte ein Problem sein, nur 10.5 ist verfügbar.

Mich wundert das in dem Archiv nichts sinnvolles steht. Achte aber darauf das richtige Paket zunehmen PPC / Intel 32bit / 64bit, wenn du es trozdem probierst. Ich hafte für nichts.

Ich würde aus dem Archiv (auf eigene Gefahr):
bin => /usr/local/bin
lib => /usr/local/lib
include => /usr/local/mysql/include
kopieren, das würde der Ordnerstruktur von Linux für das Paket libmysqlclient-dev entsprechen.
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

Hallo und frohe Weihnachten.

Danke, das war die Lösung für oursql! Ich hatte tatsächlich den Inhalt der Ordner falsch kopiert. Sie gehören natürlich in /usr/lib und /usr/include und nicht in /usr/local/mysql/xxx. Das /bin Verzeichnis habe ich mir erst mal gespart, da es sich hierbei nur um die mysql_config handelt, die bereits vorhanden ist.

Fakt ist, so hat es funktioniert. Habe dann noch mal alles von oursql gelöscht und neu kompiliert und siehe da:
>>> import oursql
>>> conn = oursql.connect(host='XXXXXX', user='XXXXX', passwd='XXXXXX', db='XXXXXX', port=XXXXX)
>>>
Jetzt muss ich echt nur noch rausfinden, wie ich dieses funktionierende MySQL Modul mit Django benutzen kann. Denn oursql wird natürlich persé erst mal nicht als DB ENGINGE erkannt.
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

https://github.com/dcramer/django-oursql
Hier liegt die Lösung.

Entpacken, 'sudo python setup.py install' ausführen und als ENGINE 'mysql_oursql.standard' eintragen.

Noch mal vielen Dank an Alle und nun geruhsame Feiertage. :!:

Gruß,
Chris
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Jetzt wo die anbindung richtig kompiliert ist, kannst du vmtl. auch MySQLdb nutzen. Das hat den Vortteil dass es *direkt* von Django unterstützt wird...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
chrjs
User
Beiträge: 15
Registriert: Sonntag 24. Oktober 2010, 20:15

Jawoll, das funktioniert nun auch. :)

Danke & Gruß,
Chris
Antworten