Posted under » MySQL » Python » Django on 06 April 2021
Unlike LAMP which automatically setup MySQL connection to PHP, Python connection to MySQL can be tricky.
To install, follow this instruction or continue reading.
$ apt-get install python3-dev default-libmysqlclient-dev build-essential pkg-config
Note that if you have a specifc version of Python, eg. 3.12 you have to specify it.
$ sudo apt-get install python3.12-dev default-libmysqlclient-dev build-essential pkg-config
Once installed, then run Pip in your environment. Pip is a package-management system written in Python used to install and manage software packages. It connects to an online repository of public and paid-for private packages, called the Python Package Index. Most distributions of Python come with pip pre-installed. Check by
(bri) ubuntu@hornet:~$ pip --version
But if not, then
$ sudo apt install python3-pip $ apt install python3.8-pip # or $ pip install --upgrade pip # for good measure
Don't install mysqlclient first until you install wheel which is like a python zip packager or else you will get error when in venv.
(bri) ubuntu@hornet:~$ pip install -U wheel
If you want to use a specific Python version
(bri) ubuntu@hornet:~$ pip3.8 install -U wheel
After installing PIP do not use sudo pip or it will break apps.
Afterwhich you can proceed installing mysqlclient
$ pip install mysqlclient
If somehow you have a `failed building wheel' error, it could be because you have not installed the correct version..as above and eg.
$ sudo apt-get install python3.12-dev default-libmysqlclient-dev build-essential pkg-config
If this don't work, try to specify the version that works for your OS
(bri) ubuntu@hornet:~$ pip install mysqlclient==2.2.7
If you want to update.
(bri) ubuntu@hornet:~$ pip install mysqlclient --upgradeNormally it will uninstall the old one and then install the updated version
If you want to uninstall.
(bri) ubuntu@hornet:~$ pip uninstall mysqlclient
If you want to see the list of installed libraries
(bri) ubuntu@hornet:~$ pip list
Find using Python Package Index.
However, when I have 2 different venvs somehow it will only accept the latest version. ie. 3.12 because the installation is default while 3.8 doesn't seem to work.
You will need to install pymysql too
$ pip install pymysql
PyMySQL enables you to not only connect MySQL with pymysql but also with Peewee.