[英]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 和命令行参数与数据库通信。
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 相同:
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模块直接访问它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.