在 Windows 上使用 Python 与 MySQL 时,可能会遇到以下错误:
$python manage.py dbshell
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "C:\Python25\lib\site-packages\django\core\management\__init__.py", line
362, in execute_manager
utility.execute()
File "C:\Python25\lib\site-packages\django\core\management\__init__.py", line
303, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python25\lib\site-packages\django\core\management\base.py", line 195,
in run_from_argv
self.execute(*args, **options.__dict__)
File "C:\Python25\lib\site-packages\django\core\management\base.py", line 222,
in execute
output = self.handle(*args, **options)
File "C:\Python25\lib\site-packages\django\core\management\base.py", line 351,
in handle
return self.handle_noargs(**options)
File "C:\Python25\lib\site-packages\django\core\management\commands\dbshell.py
", line 9, in handle_noargs
from django.db import connection
File "C:\Python25\lib\site-packages\django\db\__init__.py", line 41, in <modul
e>
backend = load_backend(settings.DATABASE_ENGINE)
File "C:\Python25\lib\site-packages\django\db\__init__.py", line 17, in load_b
ackend
return import_module('.base', 'django.db.backends.%s' % backend_name)
File "C:\Python25\Lib\site-packages\django\utils\importlib.py", line 35, in im
port_module
__import__(name)
File "C:\Python25\lib\site-packages\django\db\backends\mysql\base.py", line 13
, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No mo
dule named MySQLdb
2、解决方案
-
安装 MySQLdb 模块
-
下载 MySQLdb 模块:http://sourceforge.net/projects/mysql-python/
-
解压下载的压缩包
-
打开命令提示符,进入解压后的目录
-
运行以下命令:
python setup.py install
-
-
安装 setuptools 模块
-
下载 setuptools 模块:https://pypi.org/project/setuptools/
-
解压下载的压缩包
-
打开命令提示符,进入解压后的目录
-
运行以下命令:
python ez_setup.py
-
-
编译 MySQLdb 模块
-
打开命令提示符,进入 MySQLdb 模块的目录
-
运行以下命令:
python setup.py install
-
-
确保 Python 版本与编译器版本兼容
-
如果出现错误
error: Python was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries.
,则需要使用与 Python 版本兼容的编译器来编译 MySQLdb 模块。 -
具体方法是,在 setup.py 文件中添加
-c mingw32
参数。例如:python setup.py install -c mingw32
-
-
在 Django 项目中使用 MySQL
-
在 Django 项目的
settings.py
文件中,设置以下内容:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'my_database', 'USER': 'my_username', 'PASSWORD': 'my_password', 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', 'use_unicode': True, }, } }
-
-
迁移数据库
-
运行以下命令来创建数据库表:
python manage.py migrate
-
-
测试数据库连接
-
运行以下命令来测试数据库连接:
python manage.py dbshell
如果出现以下提示,则表示数据库连接成功:
Python 2.5.2 (r252:60911, Feb 21 2010, 01:24:15) [MSC v.1500 32 bit (Intel)] on win32
-
Type “help”, “copyright”, “credits” or “license” for more information.
(InteractiveConsole)