2012-08-08 73 views
3

我正在寻找可以访问MySQL和PostgreSQL的纯Python SQL库。与PostgreSQL和MySQL一起使用的纯python SQL解决方案?

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

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

+0

我处于类似的情况,我想知道你是否正在做bluehost,是这种情况吗? – 2016-05-11 17:31:38

回答

1

您是否在寻找一个ORM或单个库,它们可以让您直接编写SQL语句并转换哪里存在差异?

我不确定psycopg2是不是纯python,但它肯定具有绑定并适用于所有平台。您仍然必须至少安装psycopg2来与PostgreSQL数据库进行通信,因为Python(据我所知)本身不附带。

从那里,你想要的任何额外的ORM库也需要安装,但大多数都是纯python在他们使用的任何后端之上。 Django可能是你的需求的框架(对于我的),但它是一个非常流行的框架,SQLAlchemy是一个试用版本和真正的系统 - 有点笨重,特别是如果你必须处理遗传(在我看来)。我听说风暴是好的,但我没有太多的测试,所以我不能完全说。

如果您正在寻找混合搭配(MySQL中的某些表格和PostgreSQL中的某些表格)与可能是MySQL或PostgreSQL的单个数据库,我一直在研究一种名为ORB的ORM,它更侧重于面向对象的设计,并允许多个数据库和数据库之间的关系。现在它只支持PostgreSQL和Mongo,只是因为我不需要MySQL,但我会为写这个后端而起身。

A)这是绝对有可能的:该代码可在http://docs.projexsoftware.com/api/orb

3

两个部分的回答中找到。

B)根据您的确切关切,纯python可能会或可能不会成为解决您的问题的好方法。

解释:

SqlAlchemy库带有两个组成部分:比较流行的“ORM”和“核心”,它位于的顶部。任何一个都可以让你用SqlAlchemy格式(这只是Python)编写你的SQL命令; SqlAlchemy然后将语句编译为Mysql或PostgreSQL并连接到适当的数据库。

SqlAlchemy是一个伟大的图书馆,我推荐它的一切。虽然您必须以自己的格式编写语句,但您可以随时轻松地选择 - 并且可以切换到几乎所有您需要的基础数据库库。无论您是否需要支持多个后端,它都是在任何数据库项目中使用的完美平台。

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

至于写作CSV,标准库中有你覆盖。

import csv 

因此,该警告?

以下可能会或可能不会适用于您的情况:

大部分在Python宇宙更高级别的DB模块仍然推荐的mysql-Python和psycopg - 这两者都是没有纯Python和编译/链接/根据安装的数据库进行配置这很大程度上似乎来自API /集成问题的混合,以及在CPython下运行时各种纯Python包与c扩展相比的速度。

有像我推荐的纯python驱动程序,但大多数评论者声明他们主要是实验性的。 pymysql作者声称稳定性和生产准备就绪,一些博客开发者对此提出了挑战。至于“稳定”或“实验性”的含义,则因项目而异。有些API有变化,其他则不完整,有些则是越野车。

你需要确保你可以找到每个支持你所需的确切操作的系统的纯Python驱动程序。这可能很简单,或者这可能是混乱的。无论你使用SqlAlchemy还是其他的东西,当你选择一个DBAPI驱动程序时,你仍然会面临这个问题。

PyPy项目(纯python python解释器)有一个wiki列出了各种软件包的兼容性:https://bitbucket.org/pypy/compatibility/wiki/Home我希望他们能够获得特定的驱动程序建议。如果PyPy是您的预期平台,那么SqlAlchemy也可以完美运行。

+0

我会接受你的答案,如果你擦亮一点;)使用SqlAlchemy + pure python驱动程序的mysql和postgresql工作得很好。请记住,这是关于脚本的:导入,导出和维护,其中db-driver性能无关紧要。 – sorin 2014-04-17 08:44:07

1

使用SQL-Alchemy。它可以处理大多数数据库类型,并且肯定可以与postgres和MySQL一起工作。