Python: 无需MySQLdb模块访问MySQL数据库
有没有其他方法可以用Mac OS 10.5.x自带的Python版本(2.5.1)连接到MySQL数据库?我不幸的是不能在我工作的客户端机器上添加MySQLdb模块……我需要使用Leopard自带的Python版本。
4 个回答
1
如果你遇到的问题是很多人提到的msqldb模块有问题,那其实有个更简单的方法可以解决:
1. 安装mysql数据库
2. 安装pyodbc模块
3. 加载并配置odbc mysql驱动
4. 使用pyodbc进行SQL操作,这个模块非常成熟,功能也很齐全。
希望这些能帮到你。
2
你也可以看看 MySQL Connector/Python。这个工具还在开发中,但应该可以在 Python 2.5 上使用。使用它不需要安装任何 MySQL 库或其他软件。
8
为什么不安装用户版(非系统版)的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
如果这个命令能成功运行,那么你可以使用Python的subprocess
模块来调用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数据类型的功能,
- 你会失去有用的错误提示。