ImportError: Tidak ada modul bernama MySQLdb

124

Saya mengacu pada tutorial berikut untuk membuat halaman login untuk aplikasi web saya. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

Saya mengalami masalah dengan database. Saya mendapatkan sebuah

ImportError: No module named MySQLdb

saat saya mengeksekusi

http://127.0.0.1:5000/testdb

Saya telah mencoba semua cara yang mungkin untuk menginstal python mysql, yang disebutkan dalam tutorial, easy_install, sudo apt-get install.

Saya telah menginstal mysql di virtual env saya. Struktur direktori saya sama dengan yang dijelaskan di tutorial. Modul berhasil dipasang di sistem saya dan saya masih mendapatkan kesalahan ini.

Tolong bantu. Apa yang bisa menyebabkan ini.

pengguna3182194
sumber
Anda telah menginstal MySQL tetapi apakah Anda telah menginstal paket MySQLdb untuk Python?
Ffisegydd
Saya menggunakan sudo apt-get install mysql-python. Ketika saya menggunakan pip saya mendapat kesalahan Lingkungan untuk mysql_config
user3182194
mysql terinstal dalam lingkungan virtual saya dan berfungsi dengan baik dan mysqldb juga telah diinstal.
pengguna3182194

Jawaban:

277

Jika Anda mengalami masalah dalam mengompilasi ekstensi biner, atau pada platform yang tidak dapat Anda gunakan, Anda dapat mencoba menggunakan PyMySQLbinding python murni .

Cukup pip install pymysqldan alihkan URI SQLAlchemy Anda untuk memulai seperti ini:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://.....'

Ada beberapa driver lain yang juga bisa Anda coba.

DazWorrall
sumber
Apakah saya melewatkan sesuatu? Mengapa ini tidak tercantum di sini? Khususnya nama dialek itu: docs.sqlalchemy.org/en/latest/core/engines.html . Ini tepatnya yang salah, terima kasih.
CashIsClay
Perhatikan bahwa db uri agak tergantung pada konektor yang Anda gunakan :)
Braden Holt
ini tidak bekerja dengan python2.7. * untuk saya. penggunaan pip install MySQL-pythonbekerja.
Rahul Goyal
1
yang satu ini sangat membantu saat mencari solusi untuk kesalahan flask-sqlalchemy. Saya menghadapi: 1. Kesalahan menjalankan aplikasi WSGI ModuleNotFoundError: Tidak ada modul bernama 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'Kesalahan koneksi SSL: SSL_CTX_set_tmp_dh gagal') (Latar belakang kesalahan ini di: sqlalche.me/e/e3q8 ) terima kasih banyak dan saya berharap, orang lain akan menemukan solusi ini dengan deskripsi kesalahan ini lebih cepat seperti yang telah saya lakukan!
ben
Bekerja pada CentOS, tampaknya menjadi jawaban yang paling tidak bergantung pada OS. Terima kasih!
trpt4him
94

Atau coba ini:

apt-get install python-mysqldb
Edward van Kuik
sumber
9
Saya pikir jawaban untuk pertanyaannya adalah ini
codersofthedark
1
python-mysqldb memiliki beberapa dependensi seperti pustaka VC ++ dan terkadang tidak berfungsi pada OS 64 bit
Nima Soroush
1
Ini berhasil juga untuk saya. Ubuntu 16.04 dengan python 2.7
genepool99
Bagi orang-orang yang jawaban ini tidak menyelesaikan masalah mereka, ini mungkin karena masalah virtualenv lihat: stackoverflow.com/a/43984484
Chen Levy
Lebih tepatnya:sudo apt-get install python-mysqldb
Tina J
25

boleh coba

pip install mysqlclient
Doni
sumber
2
Bekerja untuk saya di python 3.7.3
nsssayom
1
Terima kasih telah berbagi, Ini berfungsi ketika saya menggunakan Windows tetapi saya memiliki beberapa masalah dengan mysqlclient( OSError: mysql_config not found) ketika saya mencoba menjalankan aplikasi yang sama di Ubuntu, jawaban yang diterima menyelesaikannya.
Bilal
Bekerja pada OSX dengan anaconda dan python 3.7.6
Saaru Lindestøkke
16

Masalah saya adalah:

return __import__('MySQLdb')
ImportError: No module named MySQLdb

dan resolusi saya:

pip install MySQL-python
yum install mysql-devel.x86_64

pada awalnya, saya baru saja menginstal MySQL-python, tetapi masalahnya masih ada. Jadi saya pikir jika masalah ini terjadi, Anda juga harus mempertimbangkan mysql-devel. Semoga ini membantu.

Petualang
sumber
2
pip install MySQL-pythonya, itu tiketnya
Kirby
Ini tergantung pada pustaka Microsoft Visual C ++ di lingkungan Windows
Erizo
15

Saya mendapat masalah ini saat saya mengerjakan SQLAlchemy. Dialek default yang digunakan SQLAlchemy untuk MySQL adalah mysql+mysqldb.

engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')

Saya mendapatkan No module named MySQLdberror " " saat perintah di atas dijalankan. Untuk memperbaikinya saya menginstal mysql-pythonmodul dan masalah telah diperbaiki.

sudo pip install mysql-python
Waseem Akram Malik
sumber
3
sebelum menginstal mysql-python, Anda masih perlu menginstal mysql atau sesuatu yang berisi perintah msyql_config.
mxi1
8

Itu tergantung pada Versi Python juga dalam pengalaman saya.

Jika Anda menggunakan Python 3, jawaban @DazWorrall berfungsi dengan baik untuk saya.

Namun, jika Anda menggunakan Python 2, Anda harus melakukannya

sudo pip install mysql-python

yang akan menginstal modul 'MySQLdb' tanpa harus mengubah URI SQLAlchemy.

seokhoonlee
sumber
2
Jika ada orang di sini, dan mendapatkan kesalahan lingkungan: mysql_config tidak ditemukan, sudo apt-get install libmysqlclient-dev dapat membantu Anda. Jawaban asli: stackoverflow.com/a/5178698/2190689
ssi-anik
Jika Anda mendapatkan jenis kesalahan config parser, Anda dapat melihat ini. stackoverflow.com/a/23978968/2190689
ssi-anik
7

Jadi saya menghabiskan sekitar 5 jam mencoba mencari cara untuk mengatasi masalah ini ketika mencoba menjalankannya

./manage.py makemigrations

Dengan Ubuntu Server LTS 16.1, tumpukan LAMP penuh, Apache2 MySql 5.7 PHP 7 Python 3 dan Django 1.10.2 Saya benar-benar kesulitan menemukan jawaban yang bagus untuk ini. Sebenarnya, saya masih belum puas, tetapi SATU-SATUNYA solusi yang berhasil untuk saya adalah ini ...

sudo apt-get install build-essential python-dev libapache2-mod-wsgi-py3 libmysqlclient-dev

diikuti oleh (dari dalam lingkungan virtual)

pip install mysqlclient

Saya benar-benar tidak suka harus menggunakan penginstalan dev ketika saya mencoba menyiapkan server web baru, tetapi sayangnya konfigurasi ini adalah satu-satunya jalur yang paling nyaman yang dapat saya ambil.

Flibertyjibbet
sumber
Jika Anda tidak memiliki paket '-dev' dan kompilator, Anda tidak dapat menginstal modul Python apa pun yang memiliki komponen ekstensi C yang perlu dikompilasi. Satu-satunya pilihan Anda adalah menggunakan kotak build terpisah yang memiliki bit ekstra dan membuat file roda Python. Kemudian salin roda ke sistem target Anda dan instal paket dari roda sebagai gantinya.
Graham Dumpleton
3

Sementara @Edward van Kuik 's jawabannya benar, tidak memperhitungkan suatu masalah dengan v1.7 virtualenv dan di atas .

Secara khusus menginstal python-mysqldbmelalui aptdi Ubuntu, taruh di bawah /usr/lib/pythonX.Y/dist-packages, tetapi jalur ini tidak disertakan secara default di virtualenv sys.path.

Jadi untuk mengatasi ini , Anda harus membuat virtualenv Anda dengan paket sistem dengan menjalankan sesuatu seperti:

virtualenv --system-site-packages .venv

Chen Levy
sumber
0

Mendapat begitu banyak kesalahan terkait perizinan dan apa yang tidak. Anda mungkin ingin mencoba ini:

xcode-select --install
chandan kharbanda
sumber
0
yum install MySQL-python.x86_64

bekerja untuk saya.

hamed
sumber
0

Di ubuntu 20, Anda dapat mencoba ini:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
DachuanZhao
sumber