Ich habe viel versucht, dieses Problem zu lösen, aber ich habe es nicht gelöst. Ich habe viel bei Google und Stackoverflow gesucht, für mich funktioniert keine Option. Bitte hilf mir. Danke im Voraus. Ich verwende Django 1.10, Python 3.4 ... und habe es versucht:
Sonst noch was?
C:\Users\benq\Desktop\dimo-develop\Project>python manage.py runserver
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0332D348>
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\Django\db\backends\mysql\base.py", line 25, in <module>
import MySQLdb as Database
ImportError: No module named 'MySQLdb'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\Django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Python34\lib\site-packages\Django\core\management\commands\runserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "C:\Python34\lib\site-packages\Django\utils\autoreload.py", line 249, in raise_last_exception
six.reraise(*_exception)
File "C:\Python34\lib\site-packages\Django\utils\six.py", line 685, in reraise
raise value.with_traceback(tb)
File "C:\Python34\lib\site-packages\Django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Python34\lib\site-packages\Django\__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Python34\lib\site-packages\Django\apps\registry.py", line 108, in populate
app_config.import_models(all_models)
File "C:\Python34\lib\site-packages\Django\apps\config.py", line 202, in import_models
self.models_module = import_module(models_module_name)
File "C:\Python34\lib\importlib\__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1129, in _exec
File "<frozen importlib._bootstrap>", line 1471, in exec_module
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
File "C:\Python34\lib\site-packages\Django\contrib\auth\models.py", line 4, in <module>
from Django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "C:\Python34\lib\site-packages\Django\contrib\auth\base_user.py", line 49, in <module>
class AbstractBaseUser(models.Model):
File "C:\Python34\lib\site-packages\Django\db\models\base.py", line 108, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "C:\Python34\lib\site-packages\Django\db\models\base.py", line 299, in add_to_class
value.contribute_to_class(cls, name)
File "C:\Python34\lib\site-packages\Django\db\models\options.py", line 263, in contribute_to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "C:\Python34\lib\site-packages\Django\db\__init__.py", line 36, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "C:\Python34\lib\site-packages\Django\db\utils.py", line 212, in __getitem__
backend = load_backend(db['ENGINE'])
File "C:\Python34\lib\site-packages\Django\db\utils.py", line 116, in load_backend
return import_module('%s.base' % backend_name)
File "C:\Python34\lib\importlib\__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "C:\Python34\lib\site-packages\Django\db\backends\mysql\base.py", line 28, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
MySQLdb ist nur für Python 2.x. Sie können nicht in Python 3.x-Versionen installieren. Jetzt kann ich an Ihrer Frage sehen, dass Sie mit Django arbeiten. In diesem Fall haben Sie drei Alternativen, aus Django MySQL-Notizen :
Dies gibt Ihnen zwei Alternativen, mysqlclient und mysql-connect-python. Die erste erfordert die Kompilierung von Erweiterungen für das Plugin. In Windows sind dies VStudio-Bibliotheken und ein Know-how für das Kompilieren nativer Erweiterungen.
mysql-connect-python wird nicht kompiliert (und ich empfehle das nicht für die Produktion, vielleicht nur für dev), so dass Sie es installieren müssen.
Du kannst es versuchen:
pip3 install mysql-connect-python
oder
pip3 install http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.Zip
wenn der erste versagt.
MySQLdb ist die Schnittstelle zur MySQL-Datenbank. Wie schon in anderen Beiträgen erwähnt, unterstützt MySQLdb Python 3.x nicht. Ich habe PyMySQL als Ersatz verwendet. Sie müssen es zuerst installieren:
pip install PyMySQL
Der nächste Schritt ist, 'MySQLdb' durch 'pymysql' in allen Codes zu ersetzen, was einschüchternd ist. Zum Glück kann PyMySQL als MySQLdb dynamisch geladen werden. Um dies in Django zu erreichen, müssen Sie der Datei __init__.py unter dem Verzeichnis der Standard-App des Projekts die folgenden Zeilen hinzufügen (Wenn Sie ein Projekt mit dem Namen "myproject" haben, fügen Sie myproject/myproject/init.py Zeilen hinzu.) :
import pymysql
pymysql.install_as_MySQLdb()
Dieses __init__.py wird ausgeführt, wenn Sie das Django-Projekt ausführen, und MySQLdb wird ersetzt. Dein Problem ist dann gelöst.
Sie können mysqlclient anstelle von MySQLdb verwenden. MySqLdb ist nicht mit Python 3 kompatibel.
pip install mysqlclient
MySQLdb ist nicht mit Python 3 kompatibel. Verwenden Sie mysql-client oder mysql-connect.
Sie können auch versuchen, mysqlclient-python direkt von source zu installieren:
Laden Sie die Quelle über git clone oder zip-Datei herunter (URL - https://github.com/PyMySQL/mysqlclient-python.git ).
Passen Sie site.cfg an (Sie können den Pfad für mysql_config angeben).
python setup.py installieren
verwenden Sie dieses Paket für python 2.7 unter Windows http://www.codegood.com/archives/129