Files
mysqlclient/MySQLdb
farcepest a6dcb3b683 Travis testing fixes
Squashed commit of the following:

commit 17fb6798cd
Author: farcepest <farcepest@gmail.com>
Date:   Tue Oct 2 14:03:57 2012 -0400

    Add a build status widget for Travis

commit 1cd83ef78e
Author: farcepest <farcepest@gmail.com>
Date:   Tue Oct 2 13:59:48 2012 -0400

    Rewrite the repository root README

commit 72848c84bc
Author: farcepest <farcepest@gmail.com>
Date:   Tue Oct 2 13:50:00 2012 -0400

    Somehow I missed this connection setup

commit 413c3b6623
Author: farcepest <farcepest@gmail.com>
Date:   Tue Oct 2 13:19:09 2012 -0400

    Giving Travis it's own database with utf8 charset in hopes this will fix the callproc test (which works everywhere else)

commit 400112e0c3
Author: farcepest <farcepest@gmail.com>
Date:   Tue Oct 2 13:06:00 2012 -0400

    Update the Travis config so that the tests use the correct database configuration file

commit ae94e44ed1
Author: farcepest <farcepest@gmail.com>
Date:   Tue Oct 2 12:59:29 2012 -0400

    Add Travis-specific configuration file

commit 3581603f45
Merge: f42c369 d0e96c7
Author: farcepest <farcepest@gmail.com>
Date:   Tue Oct 2 12:58:00 2012 -0400

    Merge branch 'master' into MySQLdb-1.2

    Conflicts:
    	MySQLdb/tests/test_MySQLdb_capabilities.py
    	MySQLdb/tests/test_MySQLdb_dbapi20.py

commit f42c369300
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:43:00 2012 -0400

    Maybe a subshell will do the trick?

commit fb346e1d40
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:35:50 2012 -0400

    Travis can't build for Python 2.4 it seems, and the test still weren't all running

commit 2f661f0991
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:31:40 2012 -0400

    OK, this should hopefully fix the build process for Travis

commit 899c3342b2
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:28:14 2012 -0400

    More Travis fixes

commit 8f593def7b
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:19:39 2012 -0400

    Fix test script due to source being down one level.

commit 1936b93cf0
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:14:38 2012 -0400

    Test connection tweaks for Travis

commit 9bf8bcf894
Merge: 7ae4f55 d551f8a
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:10:58 2012 -0400

    Merge branch 'travis' into MySQLdb-1.2

commit d551f8a8d9
Author: Andy Dustman <farcepest@gmail.com>
Date:   Mon Oct 1 13:05:25 2012 -0400

    Initial Travis setup

commit 7ae4f5549b
Merge: 235d846 c16bc33
Author: farcepest <farcepest@gmail.com>
Date:   Thu Sep 27 12:49:07 2012 -0400

    Merge remote-tracking branch 'origin/MySQLdb-1.2' into MySQLdb-1.2

commit 235d8466dd
Author: farcepest <farcepest@gmail.com>
Date:   Thu Sep 27 12:18:07 2012 -0400

    History updates for 1.2.4b2

commit 5fda4c2579
Author: farcepest <farcepest@gmail.com>
Date:   Thu Sep 27 12:06:58 2012 -0400

    Revert raise exc as value statements to raise exc, value since it breaks Python < 2.6.

commit 048b70d901
Author: farcepest <farcepest@gmail.com>
Date:   Wed Sep 26 16:02:05 2012 -0400

    Fix MySQLdb1-1 Exception format incompatible with previous versions

    Unfortunately, when I broke this, I broke the test at the same time. That should have been a red flag.

commit 162e9e4d84
Author: Andy Dustman <farcepest@gmail.com>
Date:   Tue Sep 25 19:56:49 2012 -0400

    General cleanups
2012-10-02 14:15:12 -04:00
..
2012-10-02 14:15:12 -04:00
2012-09-27 12:18:07 -04:00
2012-09-27 12:18:07 -04:00
2012-09-26 11:24:14 -04:00

====================
MySQLdb Installation
====================

.. contents::
..

Prerequisites
-------------

+ Python 2.3.4 or higher

  * http://www.python.org/

  * Versions lower than 2.3 WON'T WORK.

  * 2.4 is the primary test environment.

  * Red Hat Linux:

    - Make sure you have the Python development headers and libraries
      (python-devel).

+ setuptools

  * http://pypi.python.org/pypi/setuptools

+ MySQL 3.23.32 or higher

  * http://www.mysql.com/downloads/

  * Versions lower than 3.22 definitely WON'T WORK.

  * Versions lower than 3.22.19 might not work.

  * MySQL-3.22 might work but isn't supported anymore. It's very old.

  * MySQL-3.23 ought to work, but it's pretty elderly.

  * MySQL-4.0 is supported, but not tested and slightly discouraged.

  * MySQL-4.1 is supported. The prepared statements API is not
    supported, and won't be until MySQLdb-1.3 or 2.0, if ever.

  * MySQL-5.0 is supported and tested, including stored procedures.

  * MySQL-5.1 is supported (currently a release candidate) but untested.
    It should work.

  * MySQL-6.0 is sorta-kinda-supported (currently alpha) but untested.
    It should work.

  * Drizzle <https://launchpad.net/drizzle> is a fork of MySQL. So far
    the C API looks really similar except everything is renamed.
    Drizzle support probably won't happen in 1.2. There may be have to
    be an entirely different module, but still using DB-API.

  * MaxDB, formerly known as SAP DB (and maybe Adabas D?), is a
    completely different animal. Use the sapdb.sql module that comes
    with MaxDB.

  * 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.

+  zlib

   * Required for MySQL-3.23 and newer.

   * Red Hat Linux

     - zlib-devel to compile

     - zlib to run

+ openssl

  * May be needed for MySQL-4.0 or newer, depending on compilation
    options. If you need it, you probably already have it.

    - you may need openssl-devel on some platforms

+ 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
-----------------------

The setup.py script uses mysql_config to find all compiler and linker
options, and should work as is on any POSIX-like platform, so long as
mysql_config is in your path.

Depending on which version of MySQL you have, you may have the option
of using three different client libraries. To select the client library,
edit the [options] section of site.cfg:

    embedded
        use embedded server library (libmysqld) if True; otherwise use
	one of the client libraries (default).

    threadsafe
        thread-safe client library (libmysqlclient_r) if True (default);
	otherwise use non-thread-safe (libmysqlclient). You should
	always use the thread-safe library if you have the option;
	otherwise you *may* have problems.

    static
        if True, try to link against a static library; otherwise link
	against dynamic libraries (default). You may need static linking
	to use the embedded server.


Finally, putting it together::

  $ tar xfz MySQL-python-1.2.1.tar.gz
  $ cd MySQL-python-1.2.1
  $ # edit site.cfg if necessary
  $ python setup.py build
  $ sudo python setup.py install # or su first


Windows
.......

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.

Generally, though, running setup.py is similar to above::

  C:\...> python setup.py install
  C:\...> python setup.py bdist_wininst

The latter example should build a Windows installer package, if you
have the correct tools. In any event, you *must* have a C compiler.
Additionally, you have to set an environment variable (mysqlroot)
which is the path to your MySQL installation. In theory, it would be
possible to get this information out of the registry, but like I said,
I don't do Windows, but I'll accept a patch that does this.

On Windows, you will definitely have to edit site.cfg since there is
no mysql_config in the MySQL package.


Zope
....

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
find _mysql.


Binary Packages
---------------

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.


RPMs
....

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.4; 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. You can
also set this in setup.cfg.


Red Hat Linux
.............

MySQL-python is pre-packaged in Red Hat Linux 7.x and newer. This
includes Fedora Core and Red Hat Enterprise Linux. You can also
build your own RPM packages as described above.


Debian GNU/Linux
................

Packaged as `python-mysqldb`_::

	# apt-get install python-mysqldb

Or use Synaptic.

.. _`python-mysqldb`: http://packages.debian.org/python-mysqldb


Ubuntu
......

Same as with Debian.


Gentoo Linux
............

Packaged as `mysql-python`_. ::

      # emerge sync
      # emerge mysql-python
      # emerge zmysqlda # if you use Zope

.. _`mysql-python`: http://packages.gentoo.org/search/?sstring=mysql-python


BSD
...

MySQL-python is a ported package in FreeBSD, NetBSD, and OpenBSD,
although the name may vary to match OS conventions.


License
-------

GPL or the original license based on Python 1.5.2's license.


:Author: Andy Dustman <andy@dustman.net>
:Revision: $Id$