我见过python的一些postgresql模块,如pygresql,pypgsql,psyco。其中大多数都符合Python DB API 2.0,有些还没有被积极开发。 你推荐哪个模块?为什么呢?

有帮助吗?

解决方案

psycopg2似乎是最受欢迎的。我从来没有遇到任何麻烦。实际上,PostgreSQL也有一个纯Python接口,名为 bpgsql 。我不推荐它超过psycopg2,但它最近已经足够支持Django,如果你不能编译C模块,它会很有用。

其他提示

我建议Psycopg超过Psycopg2,因为第一个似乎更有貂。至少在我的经验中。我有一个24/7运行的应用程序,有时我从Psycopg2得到随机内存崩溃(双重免费或损坏错误)。没有什么我可以快速或轻松调试,因为它不是Python错误而是C错误。我刚刚切换到Pyscopg,之后我没有遇到任何崩溃。

另外,正如另一篇文章所述, bpgsql 似乎是一个非常好的选择。它不稳定且易于使用,因为您不需要编译它。唯一不好的一面是库不是线程安全的。

Pygresql看起来不错,有一种更直接的方法可以使用这个库查询数据库。但我不知道这个是多么稳定。

Psycopg1以高于Psycopg2的大型线程环境(如Web应用程序)的性能而闻名,尽管没有得到维护。两者都写得很好,坚如磐石,我会根据使用情况选择其中一种。

根据我的经验,psycopg2是最常用的库。就像你说的那样,它符合DB API 2.0,它提供了一个可靠的界面。

对于那些发现标准API有点过于冗长且难以使用的人,我建立了一个可能有用的小型库:

https://github.com/hugollm/rebel

我只使用psycopg2并且没有问题。

在过去的3年里,我使用过pg8000而没有任何问题。它是uptodate并且可以在pypi上使用并且可以在python2和python3上运行。你可以使用“pip install pg8000”。快速获取它(如果你在防火墙后面,别忘了使用--proxy = yourproxy:yourport)。

如果您担心线程安全,它还会提供线程安全评分(请参阅: http: //pybrary.net/pg8000/dbapi.html https:// www.python.org/dev/peps/pep-0249/ 有关不同级别的线程安全性的定义)(虽然我还没有使用psql的线程)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top