繁体   English   中英

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

[英]Python and MySQL: is there an alternative to MySQLdb?

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

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

谢谢,

托尼


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

最近还有oursql ( docs ),它比 MySQLdb 和其他现有驱动程序具有各种优势——列在文档的顶部。

你看过这些吗?

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

Oracle 实现了一个纯 python mysql 连接器,恰当地命名为mysql-connector-python 它可以通过 pip 安装并接收大量更新。

请注意,它是 GPL 许可的,这对您的项目可能是也可能不是问题。 如果你不能忍受,你也可以选择PyMySQL ,它是少数几个运行良好的连接器之一,在 MIT 下分发。

我有一个问题,我想编写适用于 Python 2 和 Python 3 的代码。我发现pymysql非常适合。 我无需调整代码即可从 MySQLdb 切换到 pymysql

安装

$ pip install PyMySQL

如果您没有管理员权限:

$ pip install -u PyMySQL

用法

用法与 MySQLdb 相同:

SELECT

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()

插入

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()

如前面的答案所述,MySQL 连接器/Python 在 Python 中完全实现了 MySQL 服务器/客户端。 无需编译,只需安装。

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

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

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

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

你在什么平台上运行?

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

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

据我所知,没有直接的选择。 我唯一能想到的就是通过pyodbc使用 ODBC 。 MySQL 站点有一个 ODBC 连接器,您可以下载 但我自己从未使用过这种方法,所以我不能说它的效果如何。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM