Почему бы не установить пользовательскую (не системную) копию MySQLdb?
Это файлы , которые вам нужно установить:
/usr/lib/pyshared/python2.6
/usr/lib/pyshared/python2.6/_mysql.so
/usr/share/pyshared
/usr/share/pyshared/MySQLdb
/usr/share/pyshared/MySQLdb/constants
/usr/share/pyshared/MySQLdb/constants/CLIENT.py
/usr/share/pyshared/MySQLdb/constants/REFRESH.py
/usr/share/pyshared/MySQLdb/constants/FLAG.py
/usr/share/pyshared/MySQLdb/constants/FIELD_TYPE.py
/usr/share/pyshared/MySQLdb/constants/__init__.py
/usr/share/pyshared/MySQLdb/constants/ER.py
/usr/share/pyshared/MySQLdb/constants/CR.py
/usr/share/pyshared/MySQLdb/__init__.py
/usr/share/pyshared/MySQLdb/cursors.py
/usr/share/pyshared/MySQLdb/times.py
/usr/share/pyshared/MySQLdb/connections.py
/usr/share/pyshared/MySQLdb/converters.py
/usr/share/pyshared/MySQLdb/release.py
/usr/share/pyshared/_mysql_exceptions.py
Даже если вы не можете установить в / usr / lib и / usr / share / pyshared, вы можете установить его где-нибудь еще, если он находится в каталоге, указанном в PYTHONPATH клиента.
Если по какой-либо причине установка пользовательской копии MySQLdb не является опцией, вы можете сделать следующее, хотя и предупреждайте: это ужасный способ взаимодействия с mysqld по причинам, которые я перечислю ниже:
Откройте терминал и наберите что-то вроде
mysql -u USER -pPASSWORD -D DATABASE -Bse "select * from table;"
-B tells mysql to run in "batch" mode
-s tells mysql to run in "silent" mode
-e tells mysql to execute the following statement
Если это работает, то вы могли бы использовать модуль subprocess
Python для вызова mysql
команд (таких как приведенная выше).
Например,
import subprocess
user='xxxxxx'
password='xxxxxxxx'
database='xxxxxxxx'
cmd=['mysql', '-u', user, '-p%s'%password, '-D', database, '-Bse', "select * from table;"]
proc=subprocess.Popen(cmd,stdout=subprocess.PIPE)
retval=proc.communicate()[0]
print(retval)
Как уже упоминалось выше, вы многое теряете, делая это. А именно
-
retval
- это просто гигантская нить. Вы теряете всю информацию о том, где поля и записи начинаются и заканчиваются,
- вы теряете автоматическое преобразование в типы данных Python,
- вы теряете информационные ошибки исключения.