How can I connect to MySQL in Python 3 on Windows?
I am using ActiveState Python 3 on Windows and wanted to connect to my MySQL database.
I heard that mysqldb
was the module to use.
I can't find mysqldb
for Python 3.
Is there a repository available where the binaries exist for mysqldb
?
How can I connect to MySQL in Python 3 on Windows?
Solution 1:
There are currently a few options for using Python 3 with mysql:
https://pypi.python.org/pypi/mysql-connector-python
- Officially supported by Oracle
- Pure python
- A little slow
- Not compatible with MySQLdb
https://pypi.python.org/pypi/pymysql
- Pure python
- Faster than mysql-connector
- Almost completely compatible with
MySQLdb
, after callingpymysql.install_as_MySQLdb()
https://pypi.python.org/pypi/cymysql
- fork of pymysql with optional C speedups
https://pypi.python.org/pypi/mysqlclient
- Django's recommended library.
- Friendly fork of the original MySQLdb, hopes to merge back some day
- The fastest implementation, as it is C based.
- The most compatible with MySQLdb, as it is a fork
- Debian and Ubuntu use it to provide both
python-mysqldb
andpython3-mysqldb
packages.
benchmarks here: https://github.com/methane/mysql-driver-benchmarks
Solution 2:
You should probably use pymysql - Pure Python MySQL client instead.
It works with Python 3.x, and doesn't have any dependencies.
This pure Python MySQL client provides a DB-API to a MySQL database by talking directly to the server via the binary client/server protocol.
Example:
import pymysql conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd=None, db='mysql') cur = conn.cursor() cur.execute("SELECT Host,User FROM user") for r in cur: print(r) cur.close() conn.close()
Solution 3:
if you want to use MySQLdb first you have to install pymysql on your pc by typing in cmd of windows
pip install pymysql
then in python shell, type
import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb
db = MySQLdb.connect("localhost" , "root" , "password")
this will establish the connection.
Solution 4:
I also tried using pymysql (on my Win7 x64 machine, Python 3.3), without too much luck. I downloaded the .tar.gz, extract, ran "setup.py install", and everything seemed fine. Until I tried connecting to a database, and got "KeyError [56]". An error which I was unable to find documented anywhere.
So I gave up on pymysql, and I settled on the Oracle MySQL connector.
It comes as a setup package, and works out of the box. And it also seems decently documented.