我正在寻找一个可以访问MySQL和PostgreSQL的纯python SQL库。
唯一的要求是在Python 2.5+上运行并且是纯python,因此它可以包含在脚本中,并且仍然可以在大多数平台上运行(无需安装)。
事实上,我正在寻找一种简单的解决方案,允许我编写SQL并将结果导出为CSV文件。
答案 0 :(得分:3)
两部分答案:
A)这绝对是可能的。
B)根据您的确切关注点,纯蟒蛇可能会或可能不是解决您问题的好方法。
说明:
SqlAlchemy
库有两个组件:更受欢迎的“ORM”,以及它所在的“核心”。任何一个都可以让你用SqlAlchemy格式编写SQL命令(这只是Python);然后,SqlAlchemy将语句编译为Mysql或PostgreSQL并连接到相应的数据库。
SqlAlchemy是一个很棒的库,我推荐几乎所有的东西。虽然您必须以其格式编写语句,但它很容易上手 - 您可以随时切换到任何您想要的基础数据库库。无论您是否需要支持多个后端,它都是在任何数据库项目中使用的完美平台。
SqlAlchemy通过标准DBAPI驱动程序与数据库通信,并且支持纯python的多个选项,特别是pymysql
和pypostgresql
驱动程序(http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-dbapis)
至于编写csv,标准库可以帮助你。
import csv
所以请注意?
以下内容可能适用于您的情况,也可能不适用:
python Universe中的大多数更高级别的db模块仍然建议使用mysql-python和psycopg - 这两个模块都不是pure-python,而是针对已安装的数据库进行编译/链接/配置。这似乎主要来自API /集成问题以及各种pure-python软件包在CPython下运行时与c-extension相比的速度。
像我推荐的那样有纯粹的python驱动程序,但是大多数评论者声称它们主要是实验性的。 pymysql的作者声称稳定性和生产准备就绪,博客的一些开发人员对此提出了挑战。至于“稳定”或“实验”意味着什么,这随项目而变化。有些有不断变化的API,有些是不完整的,有些是错误的。
您需要确保为每个支持所需操作的系统找到pure-python驱动程序。这可能很简单,或者这可能很麻烦。无论您使用SqlAlchemy还是其他东西,在选择DBAPI驱动程序时仍然会遇到这种担忧。
PyPy项目(纯python python解释器)有一个wiki,列出了各种软件包的兼容性:https://bitbucket.org/pypy/compatibility/wiki/Home我会根据具体的驱动程序建议推荐它们。如果PyPy是你想要的平台,那么SqlAlchemy也可以完美地运行它。
答案 1 :(得分:1)
您是在寻找一个ORM,还是一个允许您直接编写SQL语句并在有差异的地方进行转换的库?
我不确定psycopg2是否是纯python,但它确实具有绑定并适用于所有平台。你仍然必须安装至少psycopg2来与PostgreSQL数据库进行通信,因为Python(据我所知)本身不附带它。
从那里开始,你需要安装任何你需要的ORM库,但是大多数都是纯python,无论它们使用什么后端。
Storm,Django,SQLAlchemy都在他们的数据库层之上抽象了层 - 根据你的描述,Django可能是一个太大的框架,满足你的需求(适合我的)但是很受欢迎,SQLAlchemy是一个尝试过的真正的系统 - 有点笨重,特别是如果你必须处理继承(在我看来)。我听说风暴很好,所以我没有用它测试太多,所以我不能完全说出来。
如果你想混合和匹配(MySQL中的一些表和PostgreSQL中的一些表)与可能是MySQL或PostgreSQL的单个数据库,我一直在研究一个名为ORB的ORM,它更多地关注对象面向设计,允许多个数据库和数据库之间的关系。现在它只支持PostgreSQL和Mongo,因为我不需要MySQL,但我会写下后端。可以在http://docs.projexsoftware.com/api/orb
找到该代码答案 2 :(得分:1)
使用SQL-Alchemy。它适用于大多数数据库类型,当然也适用于postgres和MySQL。