I started working on Python start of the year and I learned a lot while I’m doing my internship in my current company, MooWee Inc. So it’s logical for me to try to pick up Django as the web framework.
One of the hurdle I met and everyone else met is trying to install MySQL adapter for Python. Being the most popular database used, it is crucial to have it work rather than circumventing around the problem by using alternative database such as SQLite or PostgreSQL.
After a few hours of searching, I found a few references that somewhat not entirely complete. I did some cross referencing and found two brings me to the entire solutions, which I’m about to show below.
Download the latest MySQL for Python adapter from SourceForge.
Extract your downloaded package by typing
$ tar xzvf MySQL-python-1.2.2.tar.gz
Inside the folder, clean the package by typing
$ sudo python setup.py clean
In the same folder, edit _mysql.c using your favourite text-editor
4a. Remove the following lines (37-39):
#define uint unsigned int
4b. Change the following:
uint port = MYSQL_PORT;
uint client_flag = 0;
unsigned int port = MYSQL_PORT;
unsigned int client_flag = 0;
Create a symbolic link under lib to point to a sub-directory called mysql. This is where it looks for during compilation.
$ sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Edit the setup_posix.py and change the following
mysql_config.path = "mysql_config"
mysql_config.path = "/usr/local/mysql/bin/mysql_config"
In the same directory, rebuild your package (ignore the warnings that comes with it)
$ sudo python setup.py build
Install the package and you are done.
$ sudo python setup.py install
Test if it’s working. It works if you can import MySQLdb.
>>> import MySQLdb
Best Wordpress Hosting Providers - 2014
All three hosts offer FREE 1-click Wordpress installs making them the best Wordpress hosting providers. For more web hosting reviews be sure to check out AlreadyHosting.com.
32 Responses to “Installing Python MySQLdb 1.2.2 on Mac OS X”
Leave a Reply
You must be logged in to post a comment.