2017-10-28 5 views
0

In den letzten paar Tagen hat es funktioniert gut. Aber heute habe ich versucht, ein Problem mit der Kodierung zu beheben, und es hat einfach plötzlich aufgehört zu arbeiten. Ich habe meinen Code wieder auf den ursprünglichen Zustand zurückgesetzt, aber aus irgendeinem Grund ist der Fehler immer noch vorhanden. (Und so ist das Kodierungsproblem leider.)SQLAlchemy funktioniert nicht mehr mit MySQLdb aus dem Nichts

Ich benutze MySQL mit MySQLdb auf Python 3.6.2 und Anaconda. Ich bin mir der Inkompatibilität von MySQLdb mit Python 3 und mit Anaconda bewusst. Ich möchte jedoch nicht Python 2 oder einen anderen Treiber verwenden.

Ich habe daran gearbeitet, indem ich mysqlclient installiert habe, und ich kann import MySQLdb in der Qt-Konsole tun. Ich war auch in der Lage, eine Engine mit Code unterhalb von vor 30 Minuten zu erstellen.

from sqlalchemy import create_engine 
engine = create_engine('mysql://user:[email protected]:3306/db?charset=utf8') 

checkte ich meinen Code mit der, der ich gerade auf der Remote-Repo musste sicherstellen, dass kein Fehler war. Es ist genau das gleiche. Aber jetzt bekomme ich den folgenden Fehler:

NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:mysql 

Das scheint sehr seltsam angesichts der Tatsache, dass ich beides habe. Dieser Fehler wird angezeigt, wenn ich mein Skript in der Qt-Konsole mit %run myscript.py ausführen. Ich mache das seit gestern ohne irgendwelche Probleme.

Ich benutze keine virtuellen Umgebungen, da ich Probleme damit hatte, sie unter Windows und mit Anaconda zu verwalten. Ich habe auch überprüft, dass MySQLdb in der Konsole vor dem Ausführen des Skripts importiert werden kann. Ich weiß also, dass das Modul richtig installiert ist.

Ich versuchte herauszufinden, was los ist, und während meiner Untersuchung fand ich heraus, dass ich sqlalchemy.connectors Modul vermisse, aber ich bin mir nicht sicher, ob das tatsächlich ein Problem ist, weil ich ähnliche Probleme online nicht finden kann . Hier ist, was ich getan habe, um diesen Fehler zu bekommen:

from sqlalchemy.dialects import mysql 
ModuleNotFoundError: No module named 'sqlalchemy.connectors' 

Weiß jemand, was das Problem ist? Dies ist wirklich frustrierend, weil dies scheint völlig aus dem Blau zu sein:/

** Ich habe gerade getestet, ob andere Treiber funktionieren (d. H. pymysql), und es tut es nicht. Ich denke es ist, weil sqlalchemy den Dialekt unabhängig vom Treiber ablehnt.

EDIT: Um zu reproduzieren (zumindest auf meiner Maschine im Moment) brauche ich nur 2 Zeilen.

from sqlalchemy import create_engine 
engine = create_engine('mysql://user:[email protected]:3306/db') 

EDIT2: Ich habe es als ein Anakonda-Problem identifiziert, aber ich bin immer noch unsicher, was die Ursache ist.

+0

Haben Sie etwas in Ihrem Projektordner 'sqlalchemy' benannt? –

+0

@KlausD. Nein, es ist ein kleines Projekt und ich habe alle Namespaces im Auge behalten. Ich habe gerade überprüft und es gibt genau 3 Erwähnungen von 'sqlalchemy' und das ist nur in einem Modul und in den' import' Anweisungen. Selbst dann benutze ich das Format "from ... import ...", so dass 'sqlalchemy' in keinem Namespace gefunden wird. – spicypumpkin

+0

Ich meine: Gibt es eine Datei oder einen Ordner mit diesem Namen? –

Antwort

0

Saubere Neuinstallation von sqlalchemy haben das Problem behoben. Ich kann nicht glauben, dass das nicht das erste war, was ich ausprobiert habe. Ich habe immer noch keine Ahnung, wie es korrumpiert wurde.

$ conda uninstall sqlalchemy 
$ conda install sqlalchemy 
Verwandte Themen