django.core.exceptions.ImproperlyConfigured: Lỗi khi tải mô-đun MySQLdb: Không có mô-đun nào có tên MySQLdb


94

Sự cố tôi gặp phải khi cố gắng kết nối với cơ sở dữ liệu cho mysql. Tôi cũng đã đưa ra các cài đặt cơ sở dữ liệu mà tôi đã sử dụng.

 Traceback (most recent call last):
 File "manage.py", line 10, in <module>
 execute_from_command_line(sys.argv)
 File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/arundhati/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Cài đặt Databse ::

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ar_test_db',                      # Or path to database file if using 
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or   '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

Cảm ơn rất nhiều vì sự giúp đỡ !!

Câu trả lời:


136

Có vẻ như bạn chưa cài đặt gói python mysql, hãy thử:

pip install mysql-python

hoặc nếu không sử dụng môi trường ảo (trên máy chủ * nix):

sudo pip install mysql-python

Bạn đang sử dụng một môi trường ảo? Tôi khuyên bạn nên làm chỉ để giữ mọi thứ ngăn nắp. Nếu đó không phải là một lựa chọn thì bạn sẽ cần phải chạy pip với quyền superuser: sudo pip install mysql-python
Ron E

2
Tôi đang sử dụng env ảo, và tôi đã cài đặt mysql, django ... tuy nhiên khi tôi làm python manage.py syncdb Nó mang lại cho tôi những lỗi tương tự mà tôi đã đăng tải
getitstarted

có phải tôi gặp sự cố phiên bản không? Tôi đang sử dụng django 1.5, python 2.7.3 với sql của tôi (14,14 cho debian)
getitstarted

4
với python 3 là: pip cài đặt mysqlclient
sadalsuud

1
Điều này trong python3 không hoạt động. đòi hỏi ConfigParser mà không có sẵn trong python3
gogagubi

40

bạn phải cài đặt python-mysqldb - Giao diện Python cho MySQL

Thử
sudo apt-get install python-mysqldb


38

Nếu bạn gặp lỗi khi cố gắng cài đặt mysqlclient bằng pip, bạn có thể thiếu thư viện nhà phát triển mysql. Cài đặt nó bằng cách chạy:

apt-get install libmysqlclient-dev

và thử lại để cài đặt mysqlclient:

pip install mysqlclient

2
Nó đã được pip install mysqlclient. Tôi đã quên thêm tệp này vào tệp tin request.txt của mình, vì vậy mặc dù cơ sở dữ liệu MySQL đã ở đó và được phổ biến, máy chủ web Django của tôi không thể tương tác với nó.
Blairg 23

cảm ơn câu trả lời này đã lưu lại ngày của tôi. Tôi đã cố gắng làm cho mysql hoạt động với django trong 2 ngày :)
rishabhr0y

13

Câu trả lời của tôi tương tự với @ Ron-E, nhưng tôi gặp một số lỗi / sửa chữa khác, vì vậy tôi đang đặt các bước bên dưới cho Mac OSX trên Mavericks và Python 2.7.6.

  1. Cài đặt gói mysql Python (nếu bạn nhận được thông báo thành công, hãy bỏ qua các bước bên dưới)

    pip install mysql-python
  2. Khi tôi thực hiện các bước trên, tôi gặp lỗi "EnvironmentError: mysql_config not found" nhập mô tả hình ảnh ở đây Để khắc phục điều này, tôi đã thực hiện như bên dưới trong terminal:

    export PATH=$PATH:/usr/local/mysql/bin
  3. Khi tôi thực hiện lại bước 1, tôi gặp lỗi mới "error: command 'cc' không thành công với trạng thái thoát 1" nhập mô tả hình ảnh ở đây Để khắc phục điều này, tôi đã thực hiện như sau trong terminal:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
    
  4. Tôi làm lại bước 1 và nhận được thông báo thành công 'Đã cài đặt thành công mysql-python'!


Cảm ơn đã gợi ý. Tôi nhận được vấn đề đầu tiên của bạn.
user2772346,

Tôi đã làm theo cách của bạn nhưng lỗi đầu tiên luôn xảy ra trong trường hợp của tôi. Và đối với thiết bị đầu cuối `export CFLAGS = -Qunused-objects 'đang đưa ra lỗi đó:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy

12

Khi tôi thiết lập môi trường phát triển Django cho PyCharm trong Mac OS X Mountain Lion với ứng dụng python, mysql, phần tiếp theo chuyên nghiệp, tôi đã gặp lỗi giống như chủ sở hữu của chuỗi này. Tuy nhiên, câu trả lời của tôi dành cho họ đang chạy python-mysqldb trong Mac OS Mountain Lion x86_x64 (MySql và Python cũng phải có cùng một kiến ​​trúc) và đã thử mọi thứ như pip, v.v. Để khắc phục sự cố này, hãy làm theo các bước sau:

  1. Tải xuống MySql cho Python từ đây
  2. Untar tệp đã tải xuống. Trong cửa sổ đầu cuối, thực hiện như sau: tar xvfz downloade.tar.
  3. cd / đến thư mục chưa được khai báo
  4. Chạy sudo python setup.py cài đặt
  5. Nếu bạn gặp lỗi như sau: "Lỗi môi trường: / usr / local / bin / mysql_config không tìm thấy" thì hãy thử thêm đường dẫn ass sau: "export PATH = $ PATH: / usr / local / mysql / bin". Nhưng id không giúp được gì cho tôi và tôi đã tìm ra giải pháp khác. Trong phần cuối của lỗi thực thi lệnh, đầu ra trông như thế này:

    Tệp "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", dòng 25, trong mysql_config nâng cao EnvironmentError ("% s không tìm thấy"% (mysql_config.path,))

  6. Mở setup_posix.py bằng vim và chuyển đến dòng 25 (Trong trường hợp của bạn, nó có thể khác trừ khi nó cùng phiên bản).

  7. Dòng 25 sẽ trông như thế này sau khi bạn chỉnh sửa trừ khi mysql của bạn có liên kết tượng trưng như sau '/ usr / local / mysql / bin /':

    f = popen("%s --%s" % ('/usr/local/mysql/bin/mysql_config', what))

  8. Sau đó, tôi gặp một lỗi khác như sau:

    django.core.exceptions.ImproperlyConfigured: Lỗi khi tải mô-đun MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Thư viện không được tải: libmysqlclient.18.dylib Được tham chiếu từ: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Lý do: không tìm thấy hình ảnh

  9. Cuối cùng tôi đã làm theo cách sau trong bảng điều khiển:

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Hiện tại mọi thứ hoạt động tốt. Vì vậy, tôi hy vọng nó sẽ hữu ích cho những người sử dụng Mac. :)


Cảm ơn rất nhiều. Tôi đã mất gần một tuần chỉ để chạy dự án đầu tiên của mình bằng cách sử dụng mysql haha. Phù ...
Avigit,

Cảm ơn một người đàn ông tấn! bạn đã cứu ngày của tôi! tôi đã sử dụng mac và gặp vấn đề tương tự.
user2772346,

7

Bạn đang thiếu mysqldbthư viện python . Sử dụng lệnh này (dành cho Debian / Ubuntu) để cài đặt nó: sudo apt-get install python-mysqldb


Đây là một câu trả lời, nhưng tôi nghĩ sẽ rất tuyệt nếu bạn có thể thêm nhiều chi tiết hơn là một dòng duy nhất. Cảm ơn!
Uli Köhler

Lệnh trên giúp chúng ta cài đặt giao diện Python vào cơ sở dữ liệu MySQL.
Haimei

7

Đó là bởi vì nó không tìm thấy kết nối sql. thử:

pip install mysqlclient


4

Đối với phiên bản Ubuntu 16.04 và 18.04 hoặc python 3

sudo apt-get install python3-mysqldb

4

Nếu bạn đang sử dụng pyhton phiên bản 3.4 trở lên. bạn phải cài đặt

sudo apt-get install python3-dev libmysqlclient-dev 

trong thiết bị đầu cuối. sau đó cài đặt pip install mysqlclienttrên env ảo của bạn hoặc nơi bạn đã cài đặt pip.


4

Tôi đã giải quyết vấn đề này trong môi trường này:

$ pyenv --version
pyenv 1.2.9

$ python --version
Python 3.7.2

$ python -m django --version
2.1.7

./settings.py

DATABASES = {
    'default': {
        'NAME': 'my_db_name',
        'ENGINE': 'mysql.connector.django',   # 'django.db.backends.mysql'
        'USER': '<user>',
        'PASSWORD': '<pass>',
        'HOST': 'localhost',
        'PORT': 3306,
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

Nếu bạn sử dụng 'ENGINE': 'mysql.connector.django', hãy cài đặt trình điều khiển đang thực thi:

$ pip install mysql-connector-python
Successfully installed mysql-connector-python-8.0.15 protobuf-3.7.0 six-1.12.0

Lưu ý rằng $ pip install mysql-pythonkhông hiệu quả với tôi.

Lưu ý rằng nếu bạn sử dụng 'ENGINE': 'django.db.backends.mysql', bạn nên cài đặt trình điều khiển thực thi:
$ pip install mysqlclient

Cuối cùng thực hiện:
$ python manage.py migrate

Nếu ổn, python sẽ tạo tất cả cơ sở dữ liệu id bảng sau:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

3

Trên Ubuntu, bạn nên sử dụng kho lưu trữ phân phối.

sudo apt-get install python-mysqldb

2

Với thông báo lỗi tương tự như Will, nó hoạt động để tôi cài đặt mysql trước vì tệp bị thiếu sẽ được thêm vào trong quá trình cài đặt. Vì vậy, sau khi

brew install mysql

pip install mysql-python

đã chạy không có lỗi.


Lệnh "/ usr / bin / python -u -c" import setuptools, tokenize; __ file __ = '/ private / var / folder / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python / setup.py'; f = getattr (tokenize, 'open', open) ( file ); code = f.read (). Replace ('\ r \ n', '\ n'); f.close (); execute (biên dịch (mã, file , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-externally-Managed --compile" không thành công với lỗi mã 1 vào / private / var / thư mục / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi

2

Điều này cũng xảy ra với tôi và tôi tin rằng đây đã trở thành một lỗi phổ biến không chỉ đối với các nhà phát triển Django mà còn đối với Flask, vì vậy cách tôi giải quyết vấn đề này là sử dụng brew.

  1. brew install mysql
  2. sudo pip install mysql-python

Bằng cách này, mọi vấn đề đều được giải quyết và cả hai khung đều hoạt động hoàn toàn tốt.

Tái bút: Đối với những người sử dụng macports (chẳng hạn như tôi), đây có thể là một vấn đề vì brew hoạt động ở một cấp độ khác, lời khuyên của tôi là sử dụng brew thay vì macports

Tôi hy vọng tôi có thể hữu ích.


1

Tôi đang gặp vấn đề tương tự.

Chạy pip cài đặt pymysql trong shell của bạn

Sau đó, chỉnh sửa tệp init.py trong thư mục gốc dự án của bạn (giống như settings.py) và sau đó

thêm vào:

nhập pymysql

pymysql.install_as_MySQLdb ()

điều này sẽ giải quyết vấn đề.


"Sau đó, chỉnh sửa tệp init.py trong thư mục gốc dự án của bạn" - ý bạn là __init__.py?
Alex Yu

1

thử:

pip install mysqlclient

Tôi khuyên bạn nên sử dụng nó trong môi trường ảo.


0

Chỉ để thêm vào các câu trả lời khác, nếu bạn đang sử dụng Django, bạn nên cài đặt mysql-python TRƯỚC KHI cài đặt Django.



0

nếu lỗi trông như thế này

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module:
dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: 
/usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so

vậy hãy thử đi :

pip install python-mysqldb

0

Đối mặt với vấn đề tương tự. Tôi đã thử cài đặt mysql-pythonbằng pip, nhưng không thành công do lỗi phụ thuộc gcc.

Giải pháp phù hợp với tôi

conda install mysql-python

Xin lưu ý rằng tôi đã cài đặt anaconda, không có phụ thuộc gcc.


bạn có thể xây dựng trên nó
Ayush Mallanaga Vatsyayana

-2

Có vẻ như bạn không có quyền đối với thư mục Python. Thửsudo chown -R $USER /Library/Python/2.7


-3

Có thể bạn có thể thử chế độ hoạt động sau:
sudo python manage.py runserver 0.0.0.0:8000

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.