Django manage.py syncdb throw没有名为MySQLdb的模块

时间:2009-11-17 05:52:15

标签: python mysql django macos osx-snow-leopard

我是学习Python / Django的新手......

使用位于here的以下教程。

在Snow Leopard上运行的MySQL 5中创建了一个mysite数据库。

编辑settings.py文件,如下所示:

DATABASE_ENGINE = 'mysql'        
DATABASE_NAME = 'mysite'             
DATABASE_USER = 'root'             
DATABASE_PASSWORD = ''       
DATABASE_HOST = ''            
DATABASE_PORT = ''             

现在,当我运行以下命令时:

python manage.py syncdb

我收到以下错误:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
  execute_manager(settings)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/core/management/__init__.py", line 362,
  in execute_manager
  utility.execute()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/core/management/__init__.py", line 303,
  in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/core/management/base.py", line 195, in
  run_from_argv
  self.execute(*args, **options.__dict__)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/core/management/base.py", line 221, in
  execute
  self.validate()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/core/management/base.py", line 249, in
  validate
  num_errors = get_validation_errors(s, app)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/core/management/validation.py", line
  22, in get_validation_errors
  from django.db import models, connection
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/db/__init__.py", line 41, in <module>
  backend = load_backend(settings.DATABASE_ENGINE)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages  
   /django/db/__init__.py", line 17, in load_backend
   return import_module('.base', 'django.db.backends.%s' %backend_name)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
  python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
  __import__(name)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/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 module named MySQLdb

我可能做错了什么?

快乐的节目......

5 个答案:

答案 0 :(得分:14)

sudo easy_install mysql-python

将安装MySQLdb模块以允许您从Python使用MySQL,或者,如果您想使用virtualenv(您应该),

sudo easy_install virtualenv virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PIP_VIRTUALENV_BASE=$WORKON_HOME
source /usr/local/bin/virtualenvwrapper_bashrc
mkvirtualenv mysite
pip install mysql-python django

将使用当前安装的django(您可以指定哪个版本,例如django == 1.1.1)和安装的MySQLdb模块将您置于virtualenv中。使用virtualenv将允许您为不同的项目提供单独的环境,因此您可以安装不同的模块,甚至可以为不同的项目使用这些模块(或Python)的不同版本。离开你virtualenv只需输入命令

deactivate

或者,切换到环境'foo'类型

workon foo

你还应该,如果你要使用virtualenv将这三行添加到〜/ .bash_profile(在OS X上,〜/ .bashrc一般在Linux上):

export WORKON_HOME=$HOME/.virtualenvs # where virtualenvs should be created
export PIP_VIRTUALENV_BASE=$WORKON_HOME # tells pip where to look for virtualenvs
source /usr/local/bin/virtualenvwrapper_bashrc # bash completion and wrapper functions for virtualenv

答案 1 :(得分:12)

问题是你缺少与MySQL接口的Python模块。

请参阅get your database running的Django文档,该文档进一步指向MySQL notes

但是,如果您只是阅读本教程,那么使用内置于Python的SQLite后端要容易得多。不需要驱动程序,服务器等。

答案 2 :(得分:2)

值得指出(即使在这个较晚的日期)下面的“不正确的配置”错误

  

文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages /django/db/backends/mysql/base.py”,第13行,中
  raise ImproperlyConfigured(“加载MySQLdb模块时出错:%s”%e)   django.core.exceptions.ImproperlyConfigured:   加载MySQLdb模块时出错:   没有名为MySQLdb的模块

在没有运行mysql的情况下,

可能是一个红色的鲱鱼 - 我自己只是在谷歌搜索这个错误,想知道为什么错误配置'突然'出现了,而在搜索和刺激时我运行了一些其他的manage.py命令并得到了这个类似但更有帮助的错误:

  

文件“〜/ .virtualenvs / mdid3 / lib / python2.7 / site-packages / MySQLdb / connections.py”,第187行,在 init

     

super(连接,自我)。 init (* args,** kwargs2)

     

_mysql_exceptions.OperationalError:   (2003年,“无法连接到'127.0.0.1上的MySQL服务器'(61)”)

检查mysqld后,发现它没有运行并启动它 - 我的配置错误被奇迹般地修复了!

答案 3 :(得分:1)

如果您使用

,请尝试此操作

linux: - sudo apt-get install python-mysqldb

windows: - pip install python-mysqldb或           easy_install python-mysqldb

希望这应该有用

答案 4 :(得分:0)

确保创建数据库并运行MySQL服务器尝试连接数据库以检查数据库名称,用户名和密码是否正确。然后运行:

1)python manage.py migrate

2)// variables var rotCounter = 0; var moveInPixles = 0; var nunSlides = 4; // Enter the number of slides var myFunction = function(){ moveInPixles = ( rotCounter + 1) * 746 * -1; moveInPixles += 'px'; $(".rotator-container").css('margin-left', moveInPixles); rotCounter++; $(".dot").css('background-color', 'white'); $(".dot:eq("+rotCounter+")").css('background-color', 'yellow'); if (rotCounter == nunSlides) { rotCounter = 0; $(".rotator-container").css('margin-left', 0); $(".dot").css('background-color', 'white'); $(".dot:eq("+rotCounter+")").css('background-color', 'yellow'); } }); $(".r-arrow").click(myFunction); setInterval(myFunction, 5000);