Mac OS X + Python + Django + MySQL

Ich habe viele Stunden über mehrere Tage gearbeitet, um zu versuchen, MySQL mit Mac OS X, Python zu arbeiten (ich habe beide 2.7 und 3.3 versucht) und Django 1.6.

Dieses Thema wird auf vielen Webseiten angesprochen, sowohl in SO als auch anderswo und über einen Zeitraum von vielen Jahren (eine Lösung verwendet speziell MySQLdb 1.2.2, die zuletzt im März 2007 geändert wurde). Einige der Beiträge scheinen zu sagen, dass sie es funktionieren, aber wenn ich ihre Lösung ausprobiere, funktioniert es nicht für mich. Auf der anderen Seite sagt ein Beitrag aus ein paar Monaten flach, dass es nicht möglich ist.

Das Herz des Problems scheint, einen Treiber zu installieren (ob MySQLdb oder mysql-Connector), und die Symptome variieren je nachdem, welche Anweisungen Sie folgen. Typische Show-Stopper aus den verschiedenen versuchten Lösungen sind "Kein Modul namens" MySQLdb "und" Symbol nicht gefunden: _mysql_affected_rows ", wenn Sie endlich versuchen" python manage.py syncdb ".

Man fragt sich, ob der eigentliche Versuch, so viele Lösungen zu probieren, selbst meine Dev-Umgebung durcheinander gebracht hat, so dass das, was mit einem sauberen Schiefer gearbeitet hätte, nicht mehr arbeiten wird. Ja, ich habe das mit und ohne virtualenv probiert. Ich weiß nicht, ob virtualenv mich näher gebracht hat oder nicht, weil ich nicht weiß, wie man sich nähert.

Ich habe OS X 10.7.5 (Lion) und MySQL 5.0 auf meinem Rechner. Das sind nicht die neuesten Versionen von entweder, aber ich weiß nicht, ob das zählt und ich zögere nicht, Dinge zu ändern. Sie funktionieren gut für andere MySQL-Anwendungen auf meiner Maschine. Ich werde gerne ein oder beide aktualisieren, wenn eine Lösung für spätere Versionen verfügbar ist.

Hat jemand tatsächlich die Konfiguration als den Titel dieser Post arbeiten, mit entweder Python 2.7 oder 3.3? Wenn ja, wäre ich Ihnen sehr dankbar, wenn Sie mich zur Lösung bringen würden.

AKTUALISIEREN

Ich wollte nur, dass die Leser wissen, dass ich schließlich meine App mit Python 3.3, Django 1.6 und Art von MySQL. Meine App läuft seit Monaten reibungslos.

Es tut mir leid, ich habe nicht die Zeit, um die vielen Stunden der Schritte und falschen Schritte, die ich gefolgt, um diese Arbeit zu bekommen neu zu erstellen. Ich werde nur die wichtigsten Punkte skizzieren:

  • Ich habe mit Macs mehr als vor einem Jahrzehnt angefangen, beginnend mit PowerBooks, also hat mein Mac eine Menge altes Zeug darauf. Das erste, was ich endlich beschlossen habe, war zu tun, um jede Kopie von Python und Django loszuwerden; Installateure wie MacPorts und Fink; Und irgendwelche der Verzeichnisse, die sie gerne ihre Installationen in setzen. Google war natürlich von unschätzbarem Wert für mich beim Lernen, wie dies zu tun ist, und alle anderen Schritte, die unten erwähnt werden.

  • Ich habe dann frisch angefangen (so sehr wie ich meinem Mac einen Neuanfang geben könnte) mit Homebrew als meinem einzigen Kommandozeilen-Installateur.

  • Ich habe auch virtualenv benutzt. Ich verstehe Virtualenv nicht wirklich gut, und ich habe noch nicht die Zeit, es zu erforschen, aber ich habe es funktioniert und es scheint eine gute Idee zu sein.

  • Nun, in virtualenv habe ich auch Pip verwendet, was ich vermutlich auch ein Kommandozeilen-Installateur bin, aber es scheint ein Teil der Homebrew / virtualenv-Methodik zu sein. Tut mir leid, dass ich hier keine Expertise machen kann.

  • Wie ich schon erwähnt habe, arbeitete die App-Art mit MySQL, aber als ich Homebrew benutzte, um MySQL zu deinstallieren und MariaDB stattdessen zu installieren, fing es an, wirklich gut zu arbeiten. Soweit ich sagen kann, können Django, Sequel Pro, PyCharms DB-Features und andere Programme, die denken, dass sie mit MySQL sprechen, den Unterschied zwischen MySQL und MariaDB nicht erkennen können. Ich mag auch die MariaDB Online-Dokumentation. Zugegeben, "MariaDB" ist kein guter Name, aber auch kein "MySQL".

Fazit: Wenn jemand Ihnen sagt, dass es unmöglich ist, Python3.3 und Django1.6 mit MySQL (oder zumindest MariaDB) auf einem Mac zu laufen, glaube ihnen nicht. Es kann getan werden, es ist nur schwer zu tun, wenn Ihr System hat eine Menge von Legacy-Dateien und Apps, die in Konflikt mit dem, was Sie versuchen zu tun bekommen können.

Noch eine Sache: Als ich an diesem Projekt arbeitete, sperrte ich meine Arbeit an einer GAE-App aus, bei der ich seit über einem Jahr große Fortschritte gemacht habe. Da ich bald wieder in dieses Projekt gehen werde, wollte ich meine GAE-Installation auf meinem Rechner aufstellen, aber leider kann ich das GAE-Installationsprogramm nicht mehr für Updates laufen lassen. Ich bekomme einen Fehler, wenn ich nicht in der Lage bin, python2.5 zu finden. Seufzer. Das ist es, worauf ich mich freuen muss, wenn ich wieder an diesem Projekt arbeite.

2 Solutions collect form web for “Mac OS X + Python + Django + MySQL”

Sie könnten versuchen, mit der rein-python pymysql :

 sudo easy_install pymysql 

(Verwenden Sie pip wenn Sie es installiert haben.) Dann fügen Sie dies vor execute_from_command_line in manage.py :

 try: import pymysql pymysql.install_as_MySQLdb() except ImportError: pass 

Ich fühle deinen Kampf. Ich ging durch die gleiche Sache und fand den Setup-Prozess sehr frustrierend. Ich weiß nicht wirklich, welche Anweisungen Sie folgen, auf welcher Website Sie Ausnahmen werfen. Aber ich finde, dass alle diese Anweisungen entweder ein oder zwei kleine Voraussetzungen fehlen. Zum Beispiel müssen xcode- und Befehlszeilentools installiert werden, bevor eine Pip-Installation durchgeführt wird. Für die Anschlüsse, wenn Sie mysql-python verwenden, müssen Sie wahrscheinlich python-devel installieren. Ich habe diese Anweisung benutzt . Sie haben wahrscheinlich recht, dass bei so vielen Installationsversuchen Ihr System wahrscheinlich korrupt ist und Sie eventuell Ihren Osx neu installieren und wieder reinigen müssen. Es ist schmerzhaft, aber das musste ich machen, damit es funktioniert. Ich hoffe dein nächster Versuch funktioniert.

  • Probleme, die eine Liste in Python erzeugen und in einer MySQL-Datenbank speichern [duplizieren]
  • Wie man abfragt SELECT WHERE EXISTS ... in django
  • Verbinden von Python 2.6.1 mit MySQLdb
  • Einfügen von datetime in MySql db
  • Mysql Connection, eine oder viele?
  • Python MySQLdb iterate durch Tabelle
  • MySQL LOAD DATEN LOCAL INFILE Python
  • Executemany für MySQLdb-Fehler für große Anzahl von Zeilen
  • Python zlib Ausgabe, wie man aus mysql utf-8 Tabelle wiederherstellen?
  • MYSQL und Python-Fehler
  • Django manage.py syncdb werfen Kein Modul namens MySQLdb
  • Python ist die beste Programmiersprache der Welt.