我正在寻找一个纯粹的python SQL库,可以同时访问MySQL和PostgreSQL。
惟一的要求是在Python 2.5+上运行,并且是纯python,所以它可以包含在脚本中,并且仍然可以在大多数平台上运行(无需安装)。
事实上,我正在寻找一个简单的解决方案,它将允许我编写SQL并将结果导出为CSV文件。
发布于 2012-08-09 01:39:41
答案分为两部分:
A)这是绝对可能的。
B)根据您的实际考虑,纯python可能是也可能不是解决问题的好方法。
解释:
SqlAlchemy库有两个组件:更流行的"ORM“和它所在的”核心“。这两种方法都允许您以SqlAlchemy格式(也就是Python语言)编写SQL命令;然后,SqlAlchemy会将语句编译成Mysql或PostgreSQL,并连接到适当的数据库。
SqlAlchemy是一个很棒的库,我推荐它做任何事情。虽然您确实必须以它们的格式编写语句,但它很容易掌握--而且您可以切换到几乎任何您想要的底层数据库库……任何时候都可以。它是在任何数据库项目中使用的完美平台,无论您是否需要支持多个后端。
SqlAlchemy通过标准的DBAPI驱动程序与数据库通信,并且确实支持纯python的多种选项,特别是pymysql和pypostgresql驱动程序( http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-dbapis )。
至于编写csv,标准库已经涵盖了。
import csv所以需要注意的是?
以下内容可能适用于您的情况,也可能不适用:
python领域中的大多数高级数据库模块仍然推荐mysql-python和Most -这两个都不是纯的-python和针对已安装数据库的编译/链接/配置。这在很大程度上似乎是由于API /集成问题和各种纯python包在CPython下运行时与c扩展相比的速度造成的。
有一些像我推荐的纯python驱动程序,但大多数评论者表示,它们主要是实验性的。pymysql的作者声称稳定性和生产准备就绪,一些博客的开发人员对此提出了质疑。至于“稳定的”或“实验的”是什么意思,这随项目而异。有些是不断变化的API,有些是不完整的,有些是错误的。
您需要确保能够为每个系统找到支持所需操作的纯python驱动程序。这可能很简单,也可能很混乱。无论您是使用SqlAlchemy还是其他工具,在选择DBAPI驱动程序时都会遇到这个问题。
PyPy项目(纯python python解释器)有一个wiki,列出了各种包的兼容性:https://bitbucket.org/pypy/compatibility/wiki/Home,我希望他们能提供具体的驱动程序建议。如果PyPy是您的目标平台,那么SqlAlchemy也可以完美地运行在它上。
发布于 2012-08-09 01:05:53
您是在寻找一个ORM,还是一个允许您直接编写SQL语句并在存在差异的地方进行转换的库?
我不确定psycopg2是否是纯python,但它肯定有绑定,并且可以在所有平台上工作。您仍然需要至少安装psycopg2才能与PostgreSQL数据库通信,因为Python (据我所知)并不是原生随附的。
在那里,你想要的任何额外的ORM库也需要安装,但大多数都是纯python,在他们使用的任何后端之上。
SQLAlchemy,Django,SQLAlchemy都在它们的数据库层之上进行了抽象层--根据你的描述,Django对于你的需求(我的需求)来说可能太大了,但它是一个流行的框架,SQLAlchemy是一个久经考验的真正的系统-尽管如果你必须处理继承(在我看来),那就有点笨拙了。我听说Storm很好,虽然我没有对它进行太多的测试,所以我不能完全说。
如果您希望混合匹配( MySQL中的一些表和PostgreSQL中的一些表)和可以是MySQL或PostgreSQL的单个数据库,我一直在研究一种名为ORB的对象关系管理,它更侧重于面向对象的设计,并允许多个数据库和数据库之间的关系。现在它只支持PostgreSQL和Mongo,只是因为我不需要MySQL,但我已经准备好编写那个后端了。其代码可以在http://docs.projexsoftware.com/api/orb中找到
发布于 2012-08-09 01:45:18
使用SQL-Alchemy。它适用于大多数数据库类型,当然也适用于postgres和MySQL。
https://stackoverflow.com/questions/11868582
复制相似问题