2008-09-27 38 views
22

我見過pygresql,pypgsql,psyco等一些python postgresql模塊。他們中的大多數都符合Python DB API 2.0,有些不再被積極開發。 你推薦哪個模塊?爲什麼?Python PostgreSQL模塊。哪個最好?

+1

[本文](https://開頭的wiki .postgresql.org/wiki/Python)給出了所有選項的概述,並且應該是最新的。 `Psycopg2`的說明是說「最常用的Python驅動程序,大多數Python + Postgres框架所必需的」。 – J0ANMM 2017-01-19 09:16:27

+0

的確,@ J0ANMM。我應該更新這個帖子,以確認我選擇的答案(現在差不多10年前)仍然是最新的。謝謝。 – jmissao 2017-05-23 18:21:22

回答

15

psycopg2似乎是最受歡迎的。我從來沒有遇到任何麻煩。實際上,PostgreSQL也有一個純Python接口,稱爲bpgsql。我不會推薦它超過psycopg2,但它最近已經足夠支持Django了,如果你不能編譯C模塊,那麼它很有用。

+2

另一個純Python選項:pg8000(http://pybrary.net/pg8000/) – bernie 2010-05-29 23:42:12

1

Psycopg1在嚴重的線程環境(比如Web應用程序)中比Psycopg2更好的性能而聞名,雖然沒有被維護。兩者都寫得很好,堅如磐石,我會根據用例選擇其中的一種。

+1

Psycopg 1非常過時:它的使用絕對不可取。 – piro 2010-05-11 11:05:52

2

我建議Psycopg而不是Psycopg2,因爲第一個看起來有點更穩定。至少在我的經驗。我有一個24/7全天候運行的應用程序,有時候我從Psycopg2中獲得了隨機內存崩潰(雙重釋放或損壞錯誤)。沒有什麼我可以快速或輕鬆地進行調試,因爲它不是Python錯誤,而是C錯誤。我剛剛切換到Pyscopg,之後我沒有遇到任何崩潰。

另外,正如另一篇文章中所說,bpgsql似乎是一個非常好的選擇。由於您不需要編譯它,因此它穩定且易於使用。唯一不好的一面是圖書館不是線程安全的。

Pygresql看起來不錯,有一個更直接的方式來查詢數據庫與這個庫。但我不知道這個有多穩定。

+1

正如另一條評論所述,Psycopg 1中有大量的錯誤已經在Psycopg 2中進行了約4年的發展。請將任何錯誤報告給郵件列表。 – piro 2010-05-11 11:08:55

0

我只使用psycopg2,沒有問題。

0

我在過去的3年裏沒有任何問題使用過pg8000。它是uptodate和pypi上可用,並在python2和python3上工作。您可以使用「pip install pg8000」來快速獲取它(如果您位於防火牆後面,請不要忘記使用--proxy = yourproxy:yourport)。

如果您擔心線程安全問題,它還會提供線程安全評分(請參閱:http://pybrary.net/pg8000/dbapi.htmlhttps://www.python.org/dev/peps/pep-0249/以瞭解不同級別線程安全性的定義)(儘管我還沒有使用psql線程)。

0

以我的經驗,psycopg2是最常用的庫。就像你說的那樣,它符合DB API 2.0,這提供了一個可靠的界面。

對於那些誰找到標準API是有點太冗長,難的工作,我做了一個小型圖書館,可以幫助:

https://github.com/hugollm/rebel