Python和MySQL:是否有MySQLdb的替代方案?

Python和MySQL:是否有MySQLdb的替代方案?,python,mysql,database,Python,Mysql,Database,是否有一个纯用Python编写的模块允许脚本与MySQL数据库通信?我已经尝试过MySQLdb,但没有成功。它需要太多:GCC、zlib和openssl。我无法使用这些工具;即使我这样做了,我也不想浪费时间让他们一起工作。我正在寻找能使我的工作更轻松的工具 有人能告诉我用Python编写的MySQL Python模块的方向吗?如果不是的话,我将非常感谢为与MySQL通信编写我自己的代码的技巧 谢谢 托尼 谢谢大家的回答。因为我使用的是一个小型数据库(几百条记录,主要是名称和地址),所以我决定使

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

有人能告诉我用Python编写的MySQL Python模块的方向吗?如果不是的话,我将非常感谢为与MySQL通信编写我自己的代码的技巧

谢谢

托尼



谢谢大家的回答。因为我使用的是一个小型数据库(几百条记录,主要是名称和地址),所以我决定使用SQLite。我刚刚发现了它。它似乎完全适合我的目的;它安装起来很简单(大约需要两分钟),并且可以很好地与Python配合使用。我一直使用Python 2.4,因此无法使用sqlite3模块,但我可以使用Python的“subprocess.Popen”函数和命令行参数与数据库通信。

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


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

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

您可以找到MySQLdb的预构建二进制软件包及其对大多数操作系统的依赖关系


您在哪个平台上运行?

您已经看过这些了吗


Oracle实现了一个名为mysql的纯python连接器。它可以通过pip安装并接收大量更新


请注意,它是GPL许可的,这对您的项目来说可能是问题,也可能不是问题。如果你不能接受它,你也可以选择它,它是麻省理工学院为数不多的几个运行良好的连接器之一。

最近还有(),它比MySQLdb和其他现有驱动程序有很多优点,列在文档的顶部。

如前面的回答所述,MySQL连接器/Python完全用Python实现MySQL服务器/客户端。没有编译,只是安装

以下是链接:
*
*代码:
*下载:(开发图片)

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

我遇到了一个问题,我想编写适用于Python 2和Python 3的代码。我发现它非常合身。我不必调整代码来从MySQLdb切换到pymysql

装置 如果您没有管理员权限:

$ pip install -u PyMySQL
用法 用法与MySQLdb相同:

挑选 插入
预构建的二进制软件包已过时。他们不提供适用于windows的Python 2.6版本或x64软件包。该平台是共享服务器上的HostGator帐户。MySQL和Python2.4是内置的,但除其他外,我没有访问GCC的权限。由于数据库很小,我认为SQLite可能是一条出路。我听说它很容易安装和使用。Python 2.6包括对SQLite的支持,所以这可能是一个好的方向。OP说他坚持使用Python 2.4,所以预构建的二进制文件应该可以。你应该能够为你的系统找到库的预构建版本。他们列出的第一个“优势”是fud。“真正的参数化?”MySQLdb已经有了。@jcd:我相信MySQLdb没有真正的参数化。检查这个:lists.mysql.com/internals/34723它似乎又开始活跃起来了。同样的事情发生在我身上,我有Archlinux,mysql python模块需要一些Archlinux没有的开发库(我也不想安装它们)。这是一个单线安装和运行像一个魅力。顺便问一下,如何在插入查询中转义字符串?@astinx
pymysql.escape_string
或准备好的语句(例如pymysql.org)链接已失效
$ pip install -u PyMySQL
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()