繁体   English   中英

与PostgreSQL和MySQL一起使用的纯python SQL解决方案?

[英]Pure python SQL solution that works with PostgreSQL and MySQL?

我正在寻找一个纯python SQL库,可以访问MySQL和PostgreSQL。

唯一的要求是在Python 2.5+上运行并且是纯python,因此它可以包含在脚本中并且仍然可以在大多数平台上运行(无需安装)。

事实上,我正在寻找一个简单的解决方案,允许我编写SQL并将结果导出为CSV文件。

两部分答案:

A)这绝对是可能的。

B)根据您的确切考虑,纯蟒蛇可能是也可能不是解决您问题的好方法。

解释:

SqlAlchemy库有两个组件:更受欢迎的“ORM”和它位于其上的“Core”。 任何一个都可以让你用SqlAlchemy格式编写SQL命令(这只是Python); 然后,SqlAlchemy将语句编译为Mysql或PostgreSQL并连接到相应的数据库。

SqlAlchemy是一个很棒的库,我推荐几乎所有的东西。 虽然您必须以其格式编写语句,但它很容易上手 - 您可以随时切换到任何您想要的基础数据库库。 无论您是否需要支持多个后端,它都是在任何数据库项目中使用的完美平台。

SqlAlchemy通过标准DBAPI驱动程序与数据库通信,并且支持纯python的多个选项,特别是pymysqlpypostgresql驱动程序( http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-dbapis

至于编写csv,标准库可以满足您的需求。

import csv

警告?

以下可能适用于您的情况,也可能不适用:

python Universe中的大多数更高级别的db模块仍然建议使用mysql-python和psycopg - 这两个模块都不是纯-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也可以完美地运行它。

您是在寻找一个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上找到该代码

使用SQL-Alchemy。 它适用于大多数数据库类型,当然也适用于postgres和MySQL。

暂无
暂无

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

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