102

I am finding it difficult to use MySQL with Python in my windows system.

I am currently using Python 2.6. I have tried to compile MySQL-python-1.2.3b1 (which is supposed to work for Python 2.6 ?) source code using the provided setup scripts. The setup script runs and it doesn't report any error but it doesn't generate _mysql module.

I have also tried setting up MySQL for Python 2.5 with out success. The problem with using 2.5 is that Python 2.5 is compiled with visual studio 2003 (I installed it using the provided binaries). I have visual studio 2005 on my windows system. Hence setuptools fails to generate _mysql module.

Any help ?

Braiam
  • 4,345
  • 11
  • 47
  • 69
Sammy
  • 1,105
  • 2
  • 9
  • 10
  • 2
    Since 3 years have passed since this was asked, and 2 years since last high voted answer, see updated answer for Python 3.2 below (or see http://wiki.python.org/moin/MySQL) – Eran Medan Aug 02 '12 at 19:57

16 Answers16

127

Download page for python-mysqldb. The page includes binaries for 32 and 64 bit versions of for Python 2.5, 2.6 and 2.7.

There's also discussion on getting rid of the deprecation warning.

UPDATE: This is an old answer. Currently, I would recommend using PyMySQL. It's pure python, so it supports all OSes equally, it's almost a drop-in replacement for mysqldb, and it also works with python 3. The best way to install it is using pip. You can install it from here (more instructions here), and then run:

pip install pymysql
Community
  • 1
  • 1
itsadok
  • 27,343
  • 27
  • 120
  • 167
  • Can anyone confirm that the first linked executable works with Python 2.6? The installation splash screen says it's only 2.5 - but I'm presuming the person who built it may just have not updated that line of documentation. – John C Aug 26 '10 at 17:13
  • I installed python 2.7 x64 but while importing MySQLdb I'm getting 'ImportError: No module named _mysql_windows.api' error. pls anyone help me to solve this issue. – Vilva Aug 03 '12 at 12:15
  • 4
    Well after doing `pip install pymysql`, `syncdb` still complained about the missing `MySQLdb` module. – Shailen Aug 20 '13 at 21:48
  • while i run this command in my windows 8.1 64 bit system it shows: Traceback (most recent call last): File "C:\Python33\Scripts\pip-script.py", line 5, in from pkg_resources import load_entry_point ImportError: No module named 'pkg_resources' – hizbul25 Mar 09 '14 at 05:35
  • @shailenTJ (and anyone with a similar problem) look [here](http://stackoverflow.com/a/7166730/7581) – itsadok Mar 09 '14 at 06:03
  • @hizbul25 pip installation is much simpler these days. Download get-pip.py from [here](https://raw.github.com/pypa/pip/master/contrib/get-pip.py) and run it. More info [here](http://www.pip-installer.org/en/latest/installing.html) – itsadok Mar 09 '14 at 06:07
  • If anyone may be able to help, I'm having trouble using pymysql: https://stackoverflow.com/questions/46145845/cannot-make-remote-connection-with-pymysql-pymysql-err-internalerror-packet-se – Phillip Sep 11 '17 at 17:34
31

This may read like your grandpa givin advice, but all answers here did not mention the best way: go nd install ActivePython instead of python.org windows binaries. I was really wondering for a long time why Python development on windows was such a pita - until I installed activestate python. I am not affiliated with them. It is just the plain truth. Write it on every wall: Python development on Windows = ActiveState! you then just pypm install mysql-python and everything works smoothly. no compile orgy. no strange errors. no terror. Just start coding and doing real work after five minutes. This is the only way to go on windows. Really.

Leniel Maccaferri
  • 94,281
  • 40
  • 348
  • 451
  • 2
    It would be a perfect solution if a Business Edition subscription wasn't necessary... – Matheus Moreira Sep 09 '10 at 21:51
  • 4
    @matheus.emm - Business Edition is not necessary for installing MySQLdb on Windows 32-bit. – Sridhar Ratnakumar Sep 18 '10 at 00:01
  • @Sridhar What do you mean? When I tried to execute the command to install mysql-python a message was displayed saying that a Business Edition subscription was necessary. Is the a (legal) way to install mysql-python without this subscription on Windows 7 64 bits? – Matheus Moreira Sep 18 '10 at 01:01
  • 7
    @matheus.emm - For free access, you can install ActivePython **32-bit** on your Windows 7 64-bit OS and then install mysql-python. ActivePython 64-bit does require a BE subscription for installing packages. – Sridhar Ratnakumar Sep 18 '10 at 04:50
  • 2
    This is great advice. I think the Business Edition is well worth it if you are seriously using Python in production. If it saves you a few hours of work a month it pays for itself. All of these configuration headaches make me remember the open source business model: "Give them the software for free, but make it so hard to install and use they need to buy the manual and/or support." Only problem is many of these projects aren't providing or selling support because they see open source as an ideology instead of what it was intended to be, a business model. lolz – TWA Jan 15 '11 at 17:49
  • 1
    Just installed it using activepython community edition and it worked like a charm. Highly recommended – Cleber Goncalves Feb 10 '11 at 17:46
  • Great!Work for ActivePython on Win7! – Simon Wang Sep 21 '13 at 11:20
15

As Python newbie learning the Python ecosystem I've just completed this.

  1. Install setuptools instructions

  2. Install MySQL 5.1. Download the 97.6MB MSI from here You can't use the essentials version because it doesnt contain the C libraries.
    Be sure to select a custom install, and mark the development tools / libraries for installation as that is not done by default. This is needed to get the C header files.
    You can verify you have done this correctly by looking in your install directory for a folder named "include". E.G C:\Program Files\MySQL\MySQL Server 5.1\include. It should have a whole bunch of .h files.

  3. Install Microsoft Visual Studio C++ Express 2008 from here This is needed to get a C compiler.

  4. Open up a command line as administrator (right click on the Cmd shortcut and then "run as administrator". Be sure to open a fresh window after you have installed those things or your path won't be updated and the install will still fail.

  5. From the command prompt:

    easy_install -b C:\temp\sometempdir mysql-python

    That will fail - which is OK.

    Now open site.cfg in your temp directory C:\temp\sometempdir and edit the "registry_key" setting to:

    registry_key = SOFTWARE\MySQL AB\MySQL Server 5.1

    now CD into your temp dir and:

    python setup.py clean

    python setup.py install

    You should be ready to rock!

  6. Here is a super simple script to start off learning the Python DB API for you - if you need it.

Community
  • 1
  • 1
7

I found a location were one person had successfully built mysql for python2.6, sharing the link, http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe

...you might see a warning while import MySQLdb which is fine and that won’t hurt anything,

C:\Python26\lib\site-packages\MySQLdb__init__.py:34: DeprecationWarning: the sets module is deprecated from sets import ImmutableSet

5

What about pymysql? It's pure Python, and I've used it on Windows with considerable success, bypassing the difficulties of compiling and installing mysql-python.

JasonFruit
  • 7,283
  • 4
  • 42
  • 60
2

The precompiled binaries on http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python is just worked for me.

  1. Open MySQL_python-1.2.5-cp27-none-win_amd64.whl file with zip extractor program.
  2. Copy the contents to C:\Python27\Lib\site-packages\
guneysus
  • 5,360
  • 2
  • 36
  • 35
2

On Python 3.4 I've installed mysqlclient from http://www.lfd.uci.edu/~gohlke/pythonlibs/ with pip install mysqlclient and it's working.

Spicko
  • 41
  • 5
2

You're not the only person having problems with Python 2.6 and MySQL (http://blog.contriving.net/2009/03/04/using-python-26-mysql-on-windows-is-nearly-impossible/). Here's an explanation how it should run under Python 2.5 http://i.justrealized.com/2008/04/08/how-to-install-python-and-django-in-windows-vista/ Good luck

Mork0075
  • 5,737
  • 4
  • 22
  • 23
2

You can try to use myPySQL. It's really easy to use; no compilation for windows, and even if you need to compile it for any reason, you only need Python and Visual C installed (not mysql).

http://code.google.com/p/mypysql/

Good luck

Phillip
  • 1,969
  • 1
  • 22
  • 38
Gustavo Vargas
  • 2,160
  • 1
  • 19
  • 32
1

If you are looking for Python 3.2 this seems the best solution I found so far

Source: http://wiki.python.org/moin/MySQL

Eran Medan
  • 41,875
  • 56
  • 175
  • 268
1

Because I am running python in a (pylons/pyramid) virtualenv, I could not run the binary installers (helpfully) linked to previously.

I had problems following the steps with Willie's answer, but I determined that the problem is (probably) that I am running windows 7 x64 install, which puts the registry key for mysql in a slightly different location, specifically in my case (note: I am running version 5.5) in: "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server 5.5".

HOWEVER, "HKEY_LOCAL_MACHINE\" cannot be included in the path or it will fail.

Also, I had to do a restart between steps 3 and 4.

After working through all of this, IMO it would have been smarter to run the entire python dev environment from cygwin.

Evan
  • 735
  • 1
  • 5
  • 14
1

There are Windows binaries for MySQL-Python (2.4 & 2.5) available on Sourceforge. Have you tried those?

Dave Webb
  • 179,733
  • 56
  • 298
  • 296
  • The 2.5 (and 2.4) binaries fail to install if only 2.6 is installed – David Sykes Jun 05 '09 at 09:23
  • That will be because the versions have to match. There's a link to MySQL-Python 2.6 for Windows in this blog post but I haven't tried it: http://timvalenta.wordpress.com/2009/02/04/python-26-mysql/ – Dave Webb Jun 05 '09 at 10:28
0

Got sick of the installation troubles with MySQLdb and tried pymysql instead.

Easy setup;

git clone https://github.com/petehunt/PyMySQL.git
python setup.py install

And APIs are pretty much the same.

Daniel Magnusson
  • 8,951
  • 2
  • 36
  • 43
0

You might want to also consider making use of Cygwin, it has mysql python libraries in the repository.

lfaraone
  • 44,680
  • 16
  • 48
  • 70
0

You can also use pyodbc with the MySQL Connector/ODBC to use MySQL on Windows. Unixodbc is also available to make the code compatible on Linux. Pyodbc uses the standard Python DB API 2.0 so if you stick with that switching between MySQL/PostgreSQL/SQLite/ODBC/JDBC drivers etc. should be relatively painless.

fijiaaron
  • 4,297
  • 3
  • 32
  • 28
0

upvoted itsadok's answer because it led me to the installation for python 2.7 as well, which is located here: http://www.codegood.com/archives/129

Mark
  • 562
  • 4
  • 9