Mysql?

118 views
Skip to first unread message

Azer

unread,
Apr 27, 2006, 4:41:25 AM4/27/06
to python
Does anyone know how can I use MySQLdb library in python?

I see this error when I use this library:

>>> import MySQLdb

Traceback (most recent call last):
File "<pyshell#0>", line 1, in -toplevel-
import MySQLdb
File "D:\Python23\lib\MySQLdb\__init__.py", line 19, in -toplevel-
import _mysql
ImportError: No module named _mysql
>>> import MySQLdb
>>> dir(MySQLdb)
['__author__', '__builtins__', '__doc__', '__file__', '__name__',
'__path__', '__revision__', '__version__', 'release', 'version_info']
>>> MySQLdb.__doc__
'MySQLdb - A DB API v2.0 compatible interface to MySQL.\n\nThis package
is a wrapper around _mysql, which mostly implements the\nMySQL C
API.\n\nconnect() -- connects to server\n\nSee the C API specification
and the MySQL documentation for more info\non other items.\n\nFor
information on how MySQLdb handles type conversion, see
the\nMySQLdb.converters module.\n\n'
>>> MySQLdb.Connection

Traceback (most recent call last):
File "<pyshell#4>", line 1, in -toplevel-
MySQLdb.Connection
AttributeError: 'module' object has no attribute 'Connection'
>>>

davecl...@gmail.com

unread,
May 11, 2006, 11:01:29 AM5/11/06
to python
I get the same error message when I try to us MySQLdb as well:

File "/usr/lib/python2.3/site-packages/MySQLdb/__init__.py", line 19,
in ?


ImportError: No module named _mysql

I just downloaded and installed MySQLdb from sourceforge. Here is a
summary of what I did:


% gunzip MySQL-python-1.2.1_p2.tar.gz
% tar xf MySQL-python-1.2.1_p2.tar
% cd MySQL-python-1.2.1_p2

edit site.cfg to switch from threadsafe to static

% python setup.py build
running build
running build_py
creating build
creating build/lib.linux-i686-2.3
copying _mysql_exceptions.py -> build/lib.linux-i686-2.3
creating build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/__init__.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/converters.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/connections.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/cursors.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/release.py -> build/lib.linux-i686-2.3/MySQLdb
copying MySQLdb/times.py -> build/lib.linux-i686-2.3/MySQLdb
creating build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/__init__.py ->
build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/CR.py ->
build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py ->
build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/ER.py ->
build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/FLAG.py ->
build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py ->
build/lib.linux-i686-2.3/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py ->
build/lib.linux-i686-2.3/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.linux-i686-2.3
gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -fomit-frame-pointer
-pipe -march=i586 -mtune=pentiumpro -g -fPIC -I/opt/mysql/include/mysql
-I/usr/include/python2.3 -c _mysql.c -o
build/temp.linux-i686-2.3/_mysql.o -mpentiumpro
-Dversion_info="(1,2,1,'final',2)" -D__version__="1.2.1_p2"
gcc -pthread -shared build/temp.linux-i686-2.3/_mysql.o
/opt/mysql/lib/mysql/libmysqlclient.a -L/opt/mysql/lib/mysql
-lmysqlclient -lz -lcrypt -lnsl -lm -o
build/lib.linux-i686-2.3/_mysql.so

Which looks promising.

Now install it.

% su
# PATH="$PATH:/opt/mysql/bin/" python setup.py install
running install
running build
running build_py
copying MySQLdb/release.py -> build/lib.linux-i686-2.3/MySQLdb
running build_ext
running install_lib
copying build/lib.linux-i686-2.3/_mysql_exceptions.py ->
/usr/lib/python2.3/site-packages
creating /usr/lib/python2.3/site-packages/MySQLdb
copying build/lib.linux-i686-2.3/MySQLdb/__init__.py ->
/usr/lib/python2.3/site-packages/MySQLdb
copying build/lib.linux-i686-2.3/MySQLdb/converters.py ->
/usr/lib/python2.3/site-packages/MySQLdb
copying build/lib.linux-i686-2.3/MySQLdb/connections.py ->
/usr/lib/python2.3/site-packages/MySQLdb
copying build/lib.linux-i686-2.3/MySQLdb/cursors.py ->
/usr/lib/python2.3/site-packages/MySQLdb
copying build/lib.linux-i686-2.3/MySQLdb/times.py ->
/usr/lib/python2.3/site-packages/MySQLdb
creating /usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/constants/__init__.py ->
/usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/constants/CR.py ->
/usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/constants/FIELD_TYPE.py ->
/usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/constants/ER.py ->
/usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/constants/FLAG.py ->
/usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/constants/REFRESH.py ->
/usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/constants/CLIENT.py ->
/usr/lib/python2.3/site-packages/MySQLdb/constants
copying build/lib.linux-i686-2.3/MySQLdb/release.py ->
/usr/lib/python2.3/site-packages/MySQLdb
copying build/lib.linux-i686-2.3/_mysql.so ->
/usr/lib/python2.3/site-packages
byte-compiling /usr/lib/python2.3/site-packages/_mysql_exceptions.py
to _mysql_exceptions.pyc
byte-compiling /usr/lib/python2.3/site-packages/MySQLdb/__init__.py
to __init__.pyc
byte-compiling /usr/lib/python2.3/site-packages/MySQLdb/converters.py
to converters.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/connections.py to
connections.pyc
byte-compiling /usr/lib/python2.3/site-packages/MySQLdb/cursors.py to
cursors.pyc
byte-compiling /usr/lib/python2.3/site-packages/MySQLdb/times.py to
times.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/constants/__init__.py to
__init__.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/constants/CR.py to CR.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/constants/FIELD_TYPE.py to
FIELD_TYPE.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/constants/ER.py to ER.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/constants/FLAG.py to FLAG.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/constants/REFRESH.py to
REFRESH.pyc
byte-compiling
/usr/lib/python2.3/site-packages/MySQLdb/constants/CLIENT.py to
CLIENT.pyc
byte-compiling /usr/lib/python2.3/site-packages/MySQLdb/release.py to
release.pyc

Which also looks promising. However, there is no mention of _mysql.py
or .pyc, only _mysql.so. If i search the untarred tree for _mysql* I
get:

# find . -name converters.py
./MySQLdb/converters.py
./build/lib.linux-i686-2.3/MySQLdb/converters.py
[root@kincapie MySQL-python-1.2.1_p2]# find . -name '_mysql*'
./_mysql_exceptions.py
./_mysql.c
./build/lib.linux-i686-2.3/_mysql_exceptions.py
./build/lib.linux-i686-2.3/_mysql.so
./build/temp.linux-i686-2.3/_mysql.o

I don't know enough about Python internals to know if the _mysql.so
file is supposed to be enough here, or if there should also be a
_mysql,pyc.

I am using Mandrake Linux 10.1, which is based on:

# uname -a
Linux kincapie 2.6.8.1-12mdk #1 Fri Oct 1 12:53:41 CEST 2004 i686 AMD
Athlon(tm) 64 Processor 3500+ unknown GNU/Linux

Thanks in advance.

Dave C

davecl...@gmail.com

unread,
May 11, 2006, 11:20:47 AM5/11/06
to python
I just solved my own problem, but the solution may be Unix specific.

I tracked down _mysql.so:

# ls -l /usr/lib/python2.3/site-packages/_mysql.so
-rwx------ 1 root root 463794 May 11 15:40
/usr/lib/python2.3/site-packages/_mysql.so*
# chmod 755 /usr/lib/python2.3/site-packages/_mysql.so

Now I got this error:

File "/usr/lib/python2.3/site-packages/MySQLdb/__init__.py", line
19, in ?

ImportError: libmysqlclient.so.15: cannot open shared object file: No
such file or directory

Which went away when I added the MySQL libraries directory to my
LD_LIBRARY_PATH.

Reply all
Reply to author
Forward
0 new messages