+ Python 2.3.4 or higher
* Versions lower than 2.2 WON'T WORK.
* 2.2.x MIGHT work, or have partial functionality.
* 2.4 is tested and works.
* Red Hat Linux:
- Make sure you have the Python development headers and libraries
+ MySQL 3.23.32 or higher
* Versions lower than 3.22 definitely WON'T WORK.
* Versions lower than 3.22.19 might not work.
* MySQL-3.22 is deprecated in favor of 3.23, but still supported.
* MySQL-3.23 is supported, but slightly deprecated.
* MySQL-4.0 is supported.
* MySQL-4.1 is mostly supported; the new prepared statements API
is not yet supported, and probably won't be until MySQLdb-1.3 or
* MySQL-5.0 and newer are not currently supported, but might work.
* MaxDB, formerly known as SAP DB (and maybe Adabas D?), is a
completely different animal. Use the sapdb.sql module that comes
* Red Hat Linux packages:
- mysql-devel to compile
- mysql and/or mysql-devel to run
* MySQL.com RPM packages:
- MySQL-devel to compile
- MySQL-shared if you want to use their shared
library. Otherwise you'll get a statically-linked module,
which may or may not be what you want.
- MySQL-shared to run if you compiled with MySQL-shared installed
* Transactions (particularly InnoDB tables) are supported for
MySQL-3.23 and up. You may need a special package from your vendor
with this support turned on. If you have Gentoo Linux, set either
of the berkdb or innodb USE flags on your server, and comment out
"skip-innodb" in /etc/mysql/my.cnf for InnoDB table support.
* Required for MySQL-3.23 and newer.
* Red Hat Linux
- zlib-devel to compile
- zlib to run
* May be needed for MySQL-4.0 or newer, depending on compilation
+ C compiler
* Most free software-based systems already have this, usually gcc.
* Most commercial UNIX platforms also come with a C compiler, or
you can also use gcc.
* If you have some Windows flavor, you usually have to pay extra
for this, or you can use Cygwin_.
.. _Cygwin: http://www.cygwin.com/
Building and installing
First thing to do is read setup.py. There are some variables towards
the beginning that tell it where your MySQL include files and
libraries are, compiler flags, loader flags, etc. You will rarely have
to change this unless you have some kind of weird setup.
After the main variables section, there is some platform-specific
configuration. If your platform is not listed, this is where you want
to add it. Note that most POSIX and UNIX-ish systems will work just
fine the way it is.
Depending on which version of MySQL you have, you may have the option
of using three different client libraries:
mostly but not guaranteed thread-safe
thread-safe, use if you can
mysqlclient is used by default. To use one of the others, set
the environment variable mysqlclient to the name of the library
you want to use. In a Bourne-style shell, use::
$ export mysqlclient=mysqlclient_r
There are several active versions of MySQL out there, and this makes
it a little tricky to configure setup.py automatically and still be
cross-platform. setup.py assumes you are using version 4.0.20. To
specify a different version, set the environment variable
If your MySQL is compiled with certain options, you may need to add
some more libraries to the link. In particular, with 4.0 and up, if
MySQL was configured to use SSL, you need to link against crypto and
ssl. You can do this by setting the environment variable mysqloptlibs
a space-separated list of libraries.
If you have the dynamic client libraries (on Linux, .so vs. .a), those
will be used by default. If they are not on your standard loader path,
you will have to set or adjust the LD_LIBRARY_PATH environment
variable (on Linux) or whatever your platform requires. Otherwise, you
can adjust setup.py to link against the static library. If you are
using standard RPM packaging, you shouldn't have to mess with this. If
you compiled MySQL yourself, you might. There is a
runtime_libraries_dir variable you can play with, but this does not
work on all system; in particular, it doesn't seem to work on Linux
Finally, putting it together::
$ tar xfz MySQL-python-1.1.8.tar.gz
$ cd MySQL-python-1.1.8
$ export mysqlversion="4.0.20"
$ export mysqlclient="mysqlclient_r"
$ export mysqloptlibs="ssl crypto"
$ python setup.py build
$ su # or use sudo
# python setup.py install
NOTE: You must export environment variables for setup.py to see them.
Depending on what shell you prefer, you may need to use "export" or
"set -x" (bash and other Bourne-like shells) or "setenv" (csh-like
I don't do Windows. However if someone provides me with a package for
Windows, I'll make it available. Don't ask me for help with Windows
because I can't help you.
If you are using a binary package of Zope, you need run setup.py with
the python executable that came with Zope. Otherwise, you'll install
into the wrong Python tree and Zope (ZMySQLDA) will not be able to
With zope.org's Zope-2.5.1-linux2-x86 binary tarball, you'd do
something like this::
$ export ZOPEBIN=".../Zope-2.5.1-linux2-x86/bin" # wherever you unpacked it
$ $ZOPEBIN/python setup.py install # builds and installs
I don't plan to make binary packages any more. However, if someone
contributes one, I will make it available. Several OS vendors have
their own packages available.
If you prefer to install RPMs, you can use the bdist_rpm command with
setup.py. This only builds the RPM; it does not install it. You may
want to use the --python=XXX option, where XXX is the name of the
Python executable, i.e. python, python2, python2.1; the default is
python. Using this will incorporate the Python executable name into
the package name for the RPM so you have install the package multiple
times if you need to support more than one version of Python.
Red Hat Linux
MySQL-python is pre-packaged in Red Hat Linux 7.x and newer. This
likely includes Fedora Core and Red Hat Enterprise Linux. You can also
build your own RPM packages as described above.
Packaged as `python-mysql`_::
# apt-get install python-mysql
.. _`python-mysql`: http://packages.debian.org/cgi-bin/search_packages.pl?keywords=python-mysql&searchon=names&subword=1&version=all&release=all
Packaged as `mysql-python`_. Gentoo is also my development platform::
# emerge sync
# emerge mysql-python
# emerge zmysqlda # if you use Zope
.. _`mysql-python`: http://packages.gentoo.org/search/?sstring=mysql-python
MySQL-python is a ported package in FreeBSD, NetBSD, and OpenBSD,
although the name may vary to match OS conventions.
GPL or the original license based on Python 1.5.2's license.
:Author: Andy Dustman <email@example.com>
:Revision: $Id: README 352 2005-01-01 00:10:20Z adustman $