[Tutor] Can't get Python connected to databases

Iain python at cairnlin.co.uk
Wed Jan 21 16:05:48 EST 2004


I have been trying to get a connection between Python and a back-end database: 
something that I expected to be a trivial exercise.  Unfortunately, I seem

to be getting nowhere and could really do with some help.

My environment : Python 2.3 (#2, Aug 31 2003, 17:27:29)
[GCC 3.3.1 (Mandrake Linux 9.2 3.3.1-1mdk)] on linux2

RPMs installed :
-bash-2.05b$ rpm -qa|grep -iE 'python|mysql|postgres'
python-base-2.3-3mdk
libmysql12-4.0.15-1mdk
MySQL-python2-0.9.2-1
postgresql-server-7.3.4-2mdk
libpython2.2-2.2.2-6mdk
MySQL-client-4.0.15-1mdk
libpython2.3-2.3-3mdk
python-2.3-3mdk
MySQL-4.0.15-1mdk
postgresql-7.3.4-2mdk
postgresql-python-7.3.4-2mdk
MySQL-common-4.0.15-1mdk
libpython2.3-devel-2.3-3mdk
postgresql-devel-7.3.4-2mdk

I don't think I have anything compiled from source or in other package
 formats relevant to this.

1. MySQL

I have tried several versions of the MySQLdb module downloaded from
sourceforge.net/projects/mysql-python.  The MySQL-python2-0.9.2-1 rpm got me
closest.  I managed to get it installed (though had to ignore one dependency
where I had a newer version of the file it was depending on - always a bad
sign) and get the following message when importing the module

>>> import MySQLdb

/usr/lib/python2.3/site-packages/MySQLdb/__init__.py:27: RuntimeWarning:
Python C API version mismatch for module _mysql: This Python has API version
1012, module _mysql has version 1011.
  import _mysql

(The module doesn't work after being imported - I checked that one).

Other source versions, including the latest test version, fail to compile
 with a host of errors.

2. PostgreSQL

I thought I would go for PostgreSQL next because the python module ships with
Mandrake.  What could go wrong?  The module (pg or _pg) loads up fine.  I
still can't connect to the datbase though (I created a database called
"web").

>>> import _pg
>>> db = _pg.connect('web','localhost')

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
_pg.error: could not connect to server: Connection refused
        Is the server running on host localhost and accepting
        TCP/IP connections on port 5432?

I checked and the database is running and is listening on port 5432.

Next I spotted something in the PostgreSQL manual, that I need to run the
createlang command first.  I tried this but no luck :

-bash-2.05b$ createlang plpython web
ERROR:  stat failed on file '$libdir/plpython': No such file or directory
createlang: language installation failed
-bash-2.05b$ createlang plpythonu web
createlang: unsupported language "plpythonu"
Supported languages are plpgsql, pltcl, pltclu, plperl, plperlu, and
 plpython.

I've hunted around and I can't find a plpython file anywhere on my PC so it
isn't installed.  However, I also can't see any rpm than I'm missing.

Many thanks,

Iain




More information about the Tutor mailing list