Python PostgreSQL模块,哪个最好?

30 投票
6 回答
19462 浏览
提问于 2025-04-11 09:19

我看到有很多用于Python的PostgreSQL模块,比如pygresql、pypgsql和psyco。大部分都符合Python数据库API 2.0的标准,但有些模块已经不再积极更新了。你推荐哪个模块呢?为什么?

6 个回答

2

我在过去的三年里一直在使用pg8000,没遇到过任何问题。它是最新的,可以在pypi上找到,支持python2和python3。你可以通过“pip install pg8000”快速安装它(如果你在防火墙后面,别忘了加上--proxy=yourproxy:yourport)。

如果你担心线程安全性,它还提供了一个线程安全性的评分(你可以查看:http://pybrary.net/pg8000/dbapi.htmlhttps://www.python.org/dev/peps/pep-0249/,了解不同线程安全级别的定义)(不过我还没有在psql中使用过线程)。

2

我建议用Psycopg而不是Psycopg2,因为我觉得Psycopg更稳定,至少在我的经验中是这样。我有一个应用程序是24小时不停运行的,有时候会遇到随机的内存崩溃(比如双重释放或损坏错误),这些都是Psycopg2引起的。这个问题我没法快速或轻松地调试,因为这不是Python的错误,而是C语言的错误。后来我换成了Psycopg,之后就没有再崩溃过。

另外,正如其他帖子提到的,bpgsql似乎也是一个很好的选择。它很稳定,而且使用起来简单,因为你不需要编译它。唯一的缺点是这个库不支持多线程。

Pygresql看起来也不错,用这个库查询数据库的方式更直接。不过我不太确定它的稳定性如何。

21

psycopg2 看起来是最受欢迎的选择。我用过它,从来没有遇到过问题。其实还有一个纯 Python 的 PostgreSQL 接口,叫做 bpgsql。我不太推荐它比 psycopg2 更好,但最近它的功能也足够强大,可以支持 Django,如果你不能编译 C 模块的话,它还是挺有用的。

撰写回答