django.core.exceptions.ImproperlyConfigured: เกิดข้อผิดพลาดในการโหลดโมดูล MySQLdb: ไม่มีโมดูลชื่อ MySQLdb


96

ปัญหาที่ฉันเผชิญขณะพยายามเชื่อมต่อกับฐานข้อมูลสำหรับ mysql ฉันได้ให้การตั้งค่าฐานข้อมูลที่ฉันใช้แล้วด้วย

 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

การตั้งค่าฐานข้อมูล ::

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.
    }
}

ขอบคุณมากสำหรับความช่วยเหลือ !!

คำตอบ:


136

ดูเหมือนว่าคุณไม่ได้ติดตั้งแพ็คเกจ python mysql ให้ลอง:

pip install mysql-python

หรือหากไม่ได้ใช้สภาพแวดล้อมเสมือน (บนโฮสต์ * nix):

sudo pip install mysql-python

คุณใช้สภาพแวดล้อมเสมือนจริงหรือไม่? ฉันขอแนะนำให้คุณทำเพียงเพื่อจัดระเบียบสิ่งต่างๆ หากนั่นไม่ใช่ตัวเลือกคุณจะต้องเรียกใช้ pip ด้วยสิทธิ์ superuser: sudo pip install mysql-python
Ron E

2
ฉันใช้ virtual env และฉันได้ติดตั้ง mysql, django ... อย่างไรก็ตามเมื่อฉันทำ python Manage.py syncdb มันทำให้ฉันมีข้อผิดพลาดเดียวกันกับที่ฉันโพสต์
เริ่มต้น

ฉันมีปัญหาเวอร์ชันโดยบังเอิญหรือไม่? ฉันใช้ django 1.5, python 2.7.3 กับ sql ของฉัน (14.14 สำหรับ debian)
เริ่มต้น

4
ด้วย python 3 คือ: pip install mysqlclient
sadalsuud

1
สิ่งนี้ใน python3 ไม่ทำงาน ต้องใช้ ConfigParser ซึ่งไม่มีใน python3
gogagubi

40

คุณต้องติดตั้ง python-mysqldb - ส่วนต่อประสาน Python กับ MySQL

ลอง
sudo apt-get install python-mysqldb


38

หากคุณได้รับข้อผิดพลาดขณะพยายามติดตั้ง mysqlclient ด้วย pip คุณอาจไม่มีไลบรารี mysql dev ติดตั้งโดยเรียกใช้:

apt-get install libmysqlclient-dev

และลองอีกครั้งเพื่อติดตั้ง mysqlclient:

pip install mysqlclient

2
pip install mysqlclientมันเป็น ฉันลืมที่จะเพิ่มสิ่งนี้ลงในไฟล์ requirements.txt ของฉันดังนั้นแม้ว่าฐานข้อมูล MySQL จะอยู่ที่นั่นและมีการเติมข้อมูล แต่เว็บเซิร์ฟเวอร์ Django ของฉันก็ไม่สามารถโต้ตอบกับมันได้
Blairg23

ขอบคุณคำตอบนี้ช่วยวันของฉันฉันพยายามทำให้ mysql ทำงานกับ django เป็นเวลา 2 วัน :)
rishabhr0y

13

คำตอบของฉันคล้ายกับ @ Ron-E แต่ฉันมีข้อผิดพลาด / การแก้ไขเพิ่มเติมเล็กน้อยดังนั้นฉันจึงทำตามขั้นตอนด้านล่างสำหรับ Mac OSX บน Mavericks และ Python 2.7.6

  1. ติดตั้งแพ็คเกจ Python mysql (หากคุณได้รับข้อความแสดงความสำเร็จให้ละเว้นขั้นตอนด้านล่าง)

    pip install mysql-python
    
  2. เมื่อฉันทำตามข้างต้นฉันได้รับข้อผิดพลาด "EnvironmentError: mysql_config not found" ป้อนคำอธิบายภาพที่นี่ ในการแก้ไขปัญหานี้ฉันได้ดำเนินการด้านล่างในเทอร์มินัล:

    export PATH=$PATH:/usr/local/mysql/bin
    
  3. เมื่อฉันรันขั้นตอนที่ 1 ใหม่ฉันได้รับข้อผิดพลาดใหม่ "error: command 'cc' ล้มเหลวด้วยสถานะการออก 1" ป้อนคำอธิบายภาพที่นี่ ในการแก้ไขปัญหานี้ฉันได้ดำเนินการด้านล่างในเทอร์มินัล:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
    
  4. ฉันเปิดขั้นตอนที่ 1 อีกครั้งและได้รับข้อความแสดงความสำเร็จ 'ติดตั้ง mysql-python สำเร็จแล้ว'!


ขอบคุณสำหรับคำแนะนำ ฉันมีปัญหาแรกของคุณ
user2772346

ฉันทำตามวิธีของคุณแล้ว แต่ข้อผิดพลาดแรกมักเกิดขึ้นในกรณีของฉัน และสำหรับเทอร์มินัล `ส่งออก CFLAGS = -Qunused-arguments:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy

12

เมื่อฉันตั้งค่าสภาพแวดล้อมการพัฒนา Django สำหรับ PyCharm ใน Mac OS X Mountain Lion ด้วย python, mysql, แอปพลิเคชัน sequel pro ฉันได้รับข้อผิดพลาดเหมือนกับเจ้าของกระทู้นี้ อย่างไรก็ตามคำตอบของฉันสำหรับพวกเขาที่ใช้ python-mysqldb ภายใต้ Mac OS Mountain Lion x86_x64 (MySql และ Python ควรเป็นสถาปัตยกรรมเดียวกัน) และลองทุกอย่างแล้วเช่น pip และอื่น ๆ เพื่อแก้ไขปัญหานี้ให้ทำตามขั้นตอนต่อไปนี้:

  1. ดาวน์โหลด MySql สำหรับ Python จากที่นี่
  2. ยกเลิกการดาวน์โหลดไฟล์ ในหน้าต่างเทอร์มินัลให้ทำดังนี้ tar xvfz downloade.tar
  3. cd / ไปยังไดเร็กทอรีที่ไม่ได้รับการดูแล
  4. เรียกใช้การติดตั้ง sudo python setup.py
  5. หากคุณได้รับข้อผิดพลาดเช่นนี้: "Environment Error: / usr / local / bin / mysql_config not found" ให้ลองเพิ่ม path ass ดังนี้: "export PATH = $ PATH: / usr / local / mysql / bin" แต่ id ไม่ได้ช่วยฉันและฉันพบวิธีอื่น ในส่วนท้ายของผลลัพธ์ข้อผิดพลาดในการดำเนินการคำสั่งซึ่งมีลักษณะดังนี้:

    ไฟล์ "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py" บรรทัดที่ 25 ใน mysql_config เพิ่ม EnvironmentError ("ไม่พบ% s"% (mysql_config.path,))

  6. เปิด setup_posix.py ด้วย vim และไปที่บรรทัด 25 (ในกรณีของคุณอาจแตกต่างกันเว้นแต่ว่าจะเป็นเวอร์ชันเดียวกัน)

  7. บรรทัดที่ 25 ควรมีลักษณะเช่นนี้หลังจากการแก้ไขของคุณเว้นแต่ว่า mysql ของคุณมีลิงก์สัญลักษณ์ดังนี้ '/ usr / local / mysql / bin /':

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

  8. หลังจากนี้ฉันได้รับข้อผิดพลาดอีกครั้งดังต่อไปนี้:

    django.core.exceptions.ImproperlyConfigured: เกิดข้อผิดพลาดในการโหลดโมดูล MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : ไม่ได้โหลดไลบรารี: libmysqlclient.18.dylib อ้างอิงจาก: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so เหตุผล: ไม่พบรูปภาพ

  9. ในที่สุดฉันก็ทำตามในคอนโซล:

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

ขณะนี้ทุกอย่างทำงานได้ดี ดังนั้นฉันหวังว่ามันจะเป็นประโยชน์สำหรับคนที่ใช้ Mac :)


ขอบคุณมาก. ฉันใช้เวลาเกือบหนึ่งสัปดาห์ในการดำเนินโครงการแรกโดยใช้ mysql haha
ฟิ้ว

ขอบคุณมาก! คุณช่วยวันของฉัน! ฉันใช้ mac และพบปัญหาเดียวกัน
user2772346

7

คุณไม่มีmysqldbไลบรารีpython ใช้คำสั่งนี้ (สำหรับ Debian / Ubuntu) เพื่อติดตั้ง: sudo apt-get install python-mysqldb


นี่คือคำตอบ แต่ฉันคิดว่ามันจะดีมากถ้าคุณสามารถเพิ่มรายละเอียดได้มากกว่าบรรทัดเดียว ขอบคุณ!
Uli Köhler

คำสั่งด้านบนช่วยให้เราสามารถติดตั้งอินเทอร์เฟซ Python กับฐานข้อมูล MySQL
Haimei


6

ดาวน์โหลดและติดตั้ง Mysql-python จากที่นี่สำหรับสภาพแวดล้อม windows http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python


ฉันใช้สิ่งนี้และฉันไม่ 'ติดตั้ง mysql เครื่องของฉัน


5

ฉันได้แก้ไขปัญหานี้ในสภาพแวดล้อมนี้:

$ 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,
        },
    }
}

หากคุณใช้'ENGINE': 'mysql.connector.django'ให้ติดตั้งไดรเวอร์ที่ดำเนินการ:

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

โปรดทราบ$ pip install mysql-pythonว่าไม่ได้ผลสำหรับฉัน

โปรดทราบว่าหากคุณใช้ 'ENGINE': 'django.db.backends.mysql'คุณควรติดตั้งไดรเวอร์ที่เรียกใช้งาน:
$ pip install mysqlclient

สุดท้ายดำเนินการ:
$ python manage.py migrate

ถ้าถูกต้อง python จะสร้างฐานข้อมูล id ของตารางเหล่านี้ทั้งหมด:

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

django.core.exceptions.ImproperlyConfigured: 'django.db.backends.django' ไม่ใช่แบ็กเอนด์ฐานข้อมูลที่พร้อมใช้งาน ลองใช้ 'django.db.backends.XXX' โดยที่ XXX เป็นหนึ่งใน: 'mysql', 'oracle', 'postgresql', 'sqlite3' ฉันใช้ 'ENGINE': 'mysql.connector.django' ด้วย pip3 ติดตั้ง mysql -connector-python มันยังใช้ไม่ได้
mountainLion

4

หากคุณใช้ pyhton เวอร์ชัน 3.4 ขึ้นไป คุณต้องติดตั้ง

sudo apt-get install python3-dev libmysqlclient-dev 

ในเทอร์มินัล จากนั้นติดตั้งpip install mysqlclientบน env เสมือนของคุณหรือตำแหน่งที่คุณติดตั้ง pip



2

ด้วยข้อความแสดงข้อผิดพลาดเดียวกันกับ Will ทำให้ฉันต้องติดตั้ง mysql ก่อนเนื่องจากไฟล์ที่หายไปจะถูกเพิ่มในระหว่างการติดตั้ง หลังจากนั้น

brew install mysql

pip install mysql-python

ทำงานโดยไม่มีข้อผิดพลาด


คำสั่ง "/ 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 () แทนที่ ('\ r \ n', '\ n'); f.close (); exec (คอมไพล์ (code, file , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-externally-managed --compile" ล้มเหลวโดยมีข้อผิดพลาด รหัส 1 ใน / private / var / โฟลเดอร์ / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi

2

สิ่งนี้เกิดขึ้นกับฉันเช่นกันและฉันเชื่อว่าสิ่งนี้กลายเป็นข้อผิดพลาดทั่วไปไม่เพียง แต่สำหรับนักพัฒนา Django เท่านั้น แต่ยังรวมถึง Flask ด้วยดังนั้นวิธีที่ฉันแก้ไขปัญหานี้คือการใช้การชง

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

วิธีนี้ทุกปัญหาได้รับการแก้ไขและกรอบทั้งสองทำงานได้ดีอย่างแน่นอน

PS: สำหรับผู้ที่ใช้ macports (เช่นตัวฉันเอง) อาจเป็นปัญหาได้เนื่องจากการชงทำงานในระดับอื่นคำแนะนำของฉันคือใช้การชงแทน macports

ฉันหวังว่าฉันจะเป็นประโยชน์


1

ฉันประสบปัญหาเดียวกันสิ่งต่อไปนี้ช่วยแก้ปัญหาของฉันได้

เรียกใช้pip install pymysqlในเชลล์ของคุณ

จากนั้นแก้ไขไฟล์ init.py ในไดเร็กทอรีต้นทางของโปรเจ็กต์ของคุณ (เช่นเดียวกับ settings.py) จากนั้น

เพิ่ม:

นำเข้า pymysql

pymysql.install_as_MySQLdb ()

สิ่งนี้ควรแก้ปัญหาได้


"จากนั้นแก้ไขไฟล์ init.py ในไดเร็กทอรีต้นทางของโปรเจ็กต์ของคุณ" - คุณหมายถึง__init__.py?
Alex Yu


0

หากต้องการเพิ่มคำตอบอื่น ๆ หากคุณใช้ Django ขอแนะนำให้คุณติดตั้ง mysql-python ก่อนที่จะติดตั้ง Django



0

หากข้อผิดพลาดมีลักษณะเช่นนี้

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

จากนั้นลอง:

pip install python-mysqldb

0

ประสบปัญหาที่คล้ายกัน ฉันพยายามติดตั้งmysql-pythonโดยใช้ pip แต่ล้มเหลวเนื่องจากข้อผิดพลาดในการพึ่งพา gcc

วิธีแก้ปัญหาที่ได้ผลสำหรับฉัน

conda install mysql-python

โปรดทราบว่าฉันติดตั้งอนาคอนดาแล้วซึ่งไม่มีการพึ่งพา gcc


คุณช่วยอธิบายให้ละเอียดได้ไหม
Ayush Vatsyayan

0

ฉันคิดว่ามันเป็นข้อผิดพลาดของเวอร์ชัน

ลองติดตั้งตามลำดับต่อไปนี้:

  1. sudo apt-get install python3-mysqldb

  2. pip3 install mysqlclient

  3. python3 manage.py makemigrations

  4. python3 manage.py migrate


-2

ดูเหมือนว่าคุณไม่มีสิทธิ์เข้าถึงโฟลเดอร์ Python ลองsudo chown -R $USER /Library/Python/2.7


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.