mirror of
https://github.com/PyMySQL/mysqlclient.git
synced 2025-08-15 11:10:58 +08:00
246 lines
7.3 KiB
Plaintext
246 lines
7.3 KiB
Plaintext
Warning:
|
|
|
|
If you fail to read all of this document and ask questions that are
|
|
already answered, I reserve the right to verbally abuse you.
|
|
|
|
|
|
Prerequisites:
|
|
|
|
Python 1.5.2 or higher
|
|
|
|
* http://www.python.org/
|
|
|
|
* Versions lower than 1.5.2 WON'T WORK.
|
|
|
|
* All versions from 1.5.2 should work. 1.6.x versions have not been
|
|
tested. 2.1.3 and 2.2.3 have both been tested. 2.0.x has not been
|
|
recently tested. 2.3 (alpha) support is coming summer 2003.
|
|
|
|
* Red Hat Linux:
|
|
|
|
o Make sure you have the Python development headers
|
|
and libraries (python-devel).
|
|
|
|
o For Python-2.x versions, this is python2-devel.
|
|
|
|
o Note that Red Hat Linux, up to version 7.3, installs
|
|
Python-1.5.2 as the python package. Starting sometime with 7.x,
|
|
Python-2.x is available as the python2 package.
|
|
|
|
o It appears that the next Red Hat release (probably 8.0) will
|
|
install Python-2.2.1 as the python package and drop 1.5.2.
|
|
|
|
* The python.org RPM packages follow the Red Hat 7.x conventions.
|
|
Python-2.1.3 RPMS install as the python2.1 package.
|
|
|
|
|
|
Distutils 1.0.2 or higher
|
|
|
|
* comes starting with Python 1.6
|
|
|
|
* 1.0.2 is included in Python version 2.1 and newer
|
|
|
|
* http://www.python.org/sigs/distutils-sig/download.html
|
|
|
|
|
|
MySQL 3.22.19 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-4.1 is not yet supported, but should be by summer 2003.
|
|
Current release 4.1.0 (alpha).
|
|
|
|
* MySQL-4.0 is supported. Current release 4.0.12.
|
|
|
|
* MySQL-3.23 is supported. Current release: 3.23.56.
|
|
|
|
* MySQL-3.22 is deprecated in favor of 3.23, but still supported.
|
|
|
|
* Red Hat Linux packages:
|
|
|
|
o XXX May be out of date for Red Hat 8.0 and newer
|
|
|
|
o mysql-devel to compile; doesn't seem to come with the
|
|
thread-safe client library
|
|
|
|
o mysql and/or mysql-devel to run
|
|
|
|
* MySQL.com RPM packages:
|
|
|
|
o MySQL-devel to compile
|
|
|
|
o 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.
|
|
|
|
o MySQL-shared to run if you compiled with MySQL-shared installed
|
|
|
|
* I prefer the MySQL.com packages to the Red Hat packages.
|
|
|
|
* 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
|
|
|
|
o zlib-devel to compile
|
|
|
|
o zlib to run
|
|
|
|
|
|
A C COMPILER!!!
|
|
|
|
* Most free software-based systems already have this, usually gcc.
|
|
|
|
* If you have some Windows flavor, you have to pay extra for this.
|
|
|
|
|
|
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.
|
|
|
|
If you have an old version of distutils (pre-1.0.2), upgrade, or
|
|
remove the parameters that are complained about. Upgrading distutils
|
|
is the smart way to go.
|
|
|
|
Depending on which version of MySQL you have, you may have the
|
|
option of using three different client libraries:
|
|
|
|
mysqlclient -- mostly but not guaranteed thread-safe
|
|
|
|
mysqlclient_r -- thread-safe, use if you can
|
|
|
|
mysqld -- embedded server
|
|
|
|
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.
|
|
|
|
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
|
|
3.23.32. To specify a different version, set the environment
|
|
variable mysqlversion.
|
|
|
|
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 gcc.
|
|
|
|
Finally, putting it together:
|
|
|
|
$ tar xfz MySQL-python-0.9.3.tar.gz
|
|
$ cd MySQL-python-0.9.3
|
|
$ export mysqlversion="4.0.12"
|
|
$ export mysqlclient="mysqlclient_r"
|
|
$ export mysqloptlibs="ssl crypto"
|
|
$ python setup.py build
|
|
$ su
|
|
# python setup.py install
|
|
|
|
|
|
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.
|
|
|
|
|
|
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.
|
|
|
|
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
|
|
|
|
|
|
RPMs
|
|
|
|
If you prefer 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.
|
|
|
|
|
|
Debian GNU/Linux
|
|
|
|
Packaged as python-mysql.
|
|
|
|
http://www.debian.org/distrib/packages
|
|
|
|
Gentoo Linux
|
|
|
|
It's in the portage tree.
|
|
|
|
# emerge sync
|
|
# emerge mysql-python
|
|
# emerge zmysqlda # if you use Zope
|
|
|
|
Note that zmysqlda will pull in mysql-python-py2.1 automatically
|
|
as Zope still officially requires Python-2.1.3.
|
|
|
|
*BSD
|
|
|
|
MySQL-python is a ported package in FreeBSD, NetBSD, and OpenBSD,
|
|
although the name may vary to match OS conventions.
|
|
|
|
|
|
Acknowledgements
|
|
|
|
Thanks go to Brian Fordham for cooking up an early version of setup.py.
|
|
|
|
See the CHANGELOG for other individual contributions.
|
|
|
|
|
|
License
|
|
|
|
GPL or the original license based on Python 1.5.2's license.
|
|
|
|
|
|
Andy Dustman <andy@dustman.net>
|
|
2003-04-19
|