Python和MySQL:有没有MySQLdb的替代品?

时间:2009-03-24 15:04:10

标签: python mysql database

是否有一个纯Python编写的模块允许脚本与MySQL数据库通信?我已经尝试过MySQLdb但没有成功。它需要太多:GCC,zlib和openssl。我无法访问这些工具;即使我这样做了,我也不想浪费时间让他们一起工作。我正在寻找能让我的工作更轻松的工具。

有人能指出我用Python编写的MySQL Python模块的方向吗?如果没有,那么编写我自己的代码与MySQL通信的提示将不胜感激。

谢谢,


感谢大家的回答。由于我正在使用一个小型数据库(几百条记录,主要是名称和地址),所以我决定使用SQLite。我刚发现它。它似乎非常适合我的目的;它安装简单(花了大约两分钟)并且与Python配合得很好。我坚持使用Python 2.4,所以我不能使用sqlite3模块,但我可以使用Python的'subprocess.Popen'函数和命令行参数与数据库进行通信。

8 个答案:

答案 0 :(得分:5)

你看过这些吗?

http://wiki.python.org/moin/MySQL

答案 1 :(得分:5)

最近还有oursqldocs),它与MySQLdb和其他现有驱动程序相比具有各种优势 - 列在文档的顶部。

答案 2 :(得分:4)

Sun有一个项目可以实现100%的python mysql驱动程序。

https://launchpad.net/myconnpy

我还没有找到任何代码。但根据blog comment,它不仅仅是蒸发器。

答案 3 :(得分:2)

您可以为大多数操作系统找到MySQLdb及其依赖项的预构建二进制包。

http://sourceforge.net/project/showfiles.php?group_id=22307&package_id=15775

你在运行什么平台?

答案 4 :(得分:2)

如前面的回答所述,MySQL Connector / Python完全用Python实现了MySQL Server / Client。没有编译,只是安装。

以下是链接:
* https://launchpad.net/myconnpy
*代码:https://code.launchpad.net/myconnpy
*下载:https://launchpad.net/myconnpy/+download(开发shapshots)

它尚未完成,但它应该足以让你继续前进。 (仅供参考,我是维护者)

答案 5 :(得分:2)

我遇到的问题是我想编写适用于Python 2和Python 3的代码。我发现pymysql非常适合。我没有调整代码来从MySQLdb切换到pymysql

安装

$ pip install PyMySQL

如果您没有管理员权限:

$ pip install -u PyMySQL

用法

用法与MySQLdb相同:

选择

import pymysql
import pymysql.cursors
connection = pymysql.connect(host=mysql['host'],
                             user=mysql['user'],
                             passwd=mysql['passwd'],
                             db=mysql['db'],
                             cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
sql = ("SELECT `id`, `formula_in_latex` FROM `wm_formula` "
       "WHERE `is_important` = 1 "
       "AND id != 1 "  # exclude trash class
       "ORDER BY `id` ASC")
cursor.execute(sql)
formulas = cursor.fetchall()

INSERT

import pymysql
connection = pymysql.connect(host=mysql['host'],
                             user=mysql['user'],
                             passwd=mysql['passwd'],
                             db=mysql['db'])
cursor = connection.cursor()
cursor.execute("INSERT INTO `toys` (`id`, `arrival`, `duration`) "
               "VALUES ('1', '2014-12-01', '123');")
connection.commit()

答案 6 :(得分:1)

毫无疑问,MySQLdb是最好的解决方案,但是如果你不能使用它......

如果您有libmysqlclient。[so | dll],则可以使用ctypes模块直接访问它。

答案 7 :(得分:0)

据我所知,没有直接的选择。我唯一能想到的是通过pyodbc使用ODBC。 MySQL站点有一个ODBC连接器,你可以download。但我自己从未使用过这种方法,所以我不能说它会有多好用。