wiki:PythonMysql
Last modified 7 years ago Last modified on 01/02/08 00:32:53

MySQLdb

Various BOINC tools depend on a Python extension module called "MySQLdb". You can get the source on mysql-python sourceforge project.

WARNING: currently (2003/08/28) BOINC requires version 0.9.2 of Python-MySQLdb, however this could be backported to 0.9.1 in the future as many Linux distributions seem to have 0.9.1.

Installation instructions

Lines beginning with "$" indicate example commands to type in bourne shell.

Lines beginning with "#" indicate example commands to type with write access to the install location (i.e. su or sudo)

Lines beginning with ">>> " indicate example commands to type in Python.

The 'shared module' options build a shared library for the Python-MySQLdb module that is loaded at Python run-time. This requires that you have a shared version of the MySQL client library installed, i.e. libmysqlclient.so.

Debian Linux: shared module

  1. Install
    # apt-get install python-mysqldb
    
    If you have multiple Python versions installed you may want to do
     # apt-get install python2.2-mysqldb
    or
     # apt-get install python2.3-mysqldb
    

Red Hat Linux: shared module

  1. Download MySQL-python
    $ wget http://easynews.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python2-0.9.2-1.i386.rpm
    
  2. Install
    # rpm -i MySQL-python2-0.9.2-1.i386.rpm
    

Other Unix/Linux?: shared module

  1. Download MySQL-python
    $ wget http://easynews.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-0.9.2.tar.gz
    
  2. Unpack
    $ gunzip -c MySQL-python-0.9.2.tar.gz | tar xf -
    
  3. Build
    $ cd MySQL-python-0.9.2
    $ python setup.py build
    
  4. Install
    # python setup.py install
    

Unix/Linux?: compiled statically into Python

  1. Download MySQL-python
    $ wget http://easynews.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-0.9.2.tar.gz
    
  2. Unpack
    $ gunzip -c MySQL-python-0.9.2.tar.gz | tar xf -
    
  3. Download Python
    $ wget http://python.org/ftp/python/2.3/Python-2.3.tgz   
    
  4. Unpack
    $ gunzip -c Python-2.3.tgz | tar xf -
    
  5. Copy MySQL files
    $ cp MySQL-python-0.9.2/{*.c,*.h} Python-2.3/Modules/
    $ cp MySQL-python-0.9.2/_mysql_exceptions.py Python-2.3/Lib/
    $ cp -r MySQL-python-0.9.2/MySQLdb Python-2.3/Lib/
    
  6. Enter the MySQL module in the Python extension setup file.
    $ cd Python-2.3/
    $ perl -wpi.bak -e "s,^_sre _sre.c,_mysql _mysql.c `mysql_config --cflags` `mysql_config --libs`\n$&," Modules/Setup
      (This adds the line '_mysql _msql.c [flags]' to Modules/Setup)
    
    $ perl -wpi.bak -e 's,^LIBSUBDIRS=\s+,$&MySQLdb ,' Makefile.pre.in
      (This adds MySQLdb to the list of libraries to install)
    
  7. Configure python
    $ cd Python-2.3/
    $ ./configure --prefix=/usr/local
     or whatever path you want instead of /usr/local]
    
  8. Build
    $ make
    
    Troubleshooting: If you get undefined symbols or other compile errors in _mysql.c you probably didn't add the correct include directory for mysql. If you get unresolved symbols or other link errors involving _mysql.o or libmysql.a you probably didn't add the correct libraries. You may want to check Python and MySQLdb are working before installing by running ./python; see below for instructions.
  9. Install
    $ cd ../Python-2.3/
    # make install
    

Does it work?

You can check if your Python and/or MySQLdb was compiled and installed correctly like this:

$ python
>>> import MySQLdb
>>> MySQLdb.version_info
>>> MySQLdb.connect(db='databasename', user='username', passwd='userpassword')