I am trying to connect mysql(which I have installed) to a Django project. I try to run pip install mysqlclient
, but I keep receiving an error message.
I am using python 3.12 on Windows 64-bit. The full output is below:
pip install mysqlclient
Collecting mysqlclient
Using cached mysqlclient-2.2.0.tar.gz (89 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: mysqlclient
Building wheel for mysqlclient (pyproject.toml) ... error
error: subprocess-exited-with-error
**× Building wheel for mysqlclient (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [46 lines of output]**
# Options for building extention module:
library_dirs: ['C:/mariadb-connector\\lib\\mariadb', 'C:/mariadb-connector\\lib']
libraries: ['kernel32', 'advapi32', 'wsock32', 'shlwapi', 'Ws2_32', 'crypt32', 'secur32', 'bcrypt', 'mariadbclient']
extra_link_args: ['/MANIFEST']
include_dirs: ['C:/mariadb-connector\\include\\mariadb', 'C:/mariadb-connector\\include']
extra_objects: []
define_macros: [('version_info', (2, 2, 0, 'final', 0)), ('__version__', '2.2.0')]
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-312
creating build\lib.win-amd64-cpython-312\MySQLdb
copying src\MySQLdb\connections.py -> build\lib.win-amd64-cpython-312\MySQLdb
copying src\MySQLdb\converters.py -> build\lib.win-amd64-cpython-312\MySQLdb
copying src\MySQLdb\cursors.py -> build\lib.win-amd64-cpython-312\MySQLdb
copying src\MySQLdb\release.py -> build\lib.win-amd64-cpython-312\MySQLdb
copying src\MySQLdb\times.py -> build\lib.win-amd64-cpython-312\MySQLdb
copying src\MySQLdb\_exceptions.py -> build\lib.win-amd64-cpython-312\MySQLdb
copying src\MySQLdb\__init__.py -> build\lib.win-amd64-cpython-312\MySQLdb
creating build\lib.win-amd64-cpython-312\MySQLdb\constants
copying src\MySQLdb\constants\CLIENT.py -> build\lib.win-amd64-cpython-312\MySQLdb\constants
copying src\MySQLdb\constants\CR.py -> build\lib.win-amd64-cpython-312\MySQLdb\constants
copying src\MySQLdb\constants\ER.py -> build\lib.win-amd64-cpython-312\MySQLdb\constants
copying src\MySQLdb\constants\FIELD_TYPE.py -> build\lib.win-amd64-cpython-312\MySQLdb\constants
copying src\MySQLdb\constants\FLAG.py -> build\lib.win-amd64-cpython-312\MySQLdb\constants
copying src\MySQLdb\constants\__init__.py -> build\lib.win-amd64-cpython-312\MySQLdb\constants
running egg_info
writing src\mysqlclient.egg-info\PKG-INFO
writing dependency_links to src\mysqlclient.egg-info\dependency_links.txt
writing top-level names to src\mysqlclient.egg-info\top_level.txt
reading manifest file 'src\mysqlclient.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'src\mysqlclient.egg-info\SOURCES.txt'
copying src\MySQLdb\_mysql.c -> build\lib.win-amd64-cpython-312\MySQLdb
running build_ext
building 'MySQLdb._mysql' extension
creating build\temp.win-amd64-cpython-312
creating build\temp.win-amd64-cpython-312\Release
creating build\temp.win-amd64-cpython-312\Release\src
creating build\temp.win-amd64-cpython-312\Release\src\MySQLdb
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-Dversion_info=(2, 2, 0, 'final', 0)" -D__version__=2.2.0 -IC:/mariadb-connector\include\mariadb -IC:/mariadb-connector\include -IC:\Users\Taylor\AppData\Local\Programs\Python\Python312\include -IC:\Users\Taylor\AppData\Local\Programs\Python\Python312\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" /Tcsrc/MySQLdb/_mysql.c /Fobuild\temp.win-amd64-cpython-312\Release\src/MySQLdb/_mysql.obj
_mysql.c
src/MySQLdb/_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
[end of output]
**note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for mysqlclient
Failed to build mysqlclient
ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects**
I tried to install older versions of python and install the mariadb connector but not sure if I even did those correctly.
The mysqlclient package encounters installation challenges at times due to its dependency on C language compilation and the need for root access on servers.
The mysql-connector-python library fits your description. It is a pure Python MySQL driver that doesn't depend on MySQL C client libraries and follows the DB API v2.0 specification (PEP-249). This makes it a convenient choice for situations where you want a MySQL driver written entirely in Python without external dependencies.
You can install it using pip:
https://pypi.org/project/mysql-connector-python/
Once installed, you can use it in your Python scripts or Django projects to connect to MySQL databases.