2009-11-17 63 views
10

我是新手學習的Python/Django的模塊...Django的manage.py執行syncdb扔沒有名爲MySQLdb的

現在用位於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 

我可能做錯了什麼?

快樂編程...

回答

12

問題是你錯過了與MySQL接口的Python模塊。

請參閱Django文檔get your database running,它進一步指向MySQL notes

但是,如果您只是閱讀本教程,那麼使用內置於Python的SQLite後端會容易得多。沒有司機,服務器等需要。

14
sudo easy_install mysql-python 

將安裝MySQLdb的模塊,使您可以使用MySQL從Python的工作,或者,如果你想使用的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 

會把你一個的virtualenv內使用當前安裝的django(您可以指定哪個版本,例如django == 1.1.1)以及安裝的MySQLdb模塊。使用virtualenv可以讓你爲不同的項目分開安裝環境,這樣你就可以安裝不同的模塊,甚至爲不同的項目使用不同版本的模塊(或Python)。離開你VIRTUALENV只需鍵入命令

deactivate 

,或者切換到環境的「富」型

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 
2

值得指出的(即使是在這麼晚的日期),下面

0123的 「ImproperlyConfigured」 錯誤

File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages /django/db/backends/mysql/base.py", line 13, in
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

可以在MySQL是沒有運行的情況下一個紅色的鯡魚 - 我只是在谷歌上搜索這個錯誤我自己,不知道爲什麼錯誤配置了「突然」出現,而搜索和慫恿我跑了一些其他的管理。PY命令,並得到了這個類似,但更樂於助人,錯誤:

File "~/.virtualenvs/mdid3/lib/python2.7/site-packages/MySQLdb/connections.py", line 187, in init

super(Connection, self).init(*args, **kwargs2)

_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (61)")

檢查mysqld的,發現它沒有運行,啓動它後 - 我的配置錯誤卻奇蹟般地固定!

1

試試這個,如果你正在使用

的Linux: - sudo apt-get install python-mysqldb

窗口: - pip install python-mysqldbeasy_install python-mysqldb

希望這應該工作

0

確保創建數據庫,並與MySQL服務器正在運行嘗試連接到數據庫以檢查數據庫名稱,用戶名和密碼是否正確。然後運行:

1)pip install mysqlclient

2)python manage.py migrate

相關問題