質問

pygresql、pypgsql、psycoなど、Python用のpostgresqlモジュールをいくつか見ました。それらのほとんどはPython DB API 2.0に準拠しており、一部は現在積極的に開発されていません。 どのモジュールをお勧めしますか?なぜですか?

役に立ちましたか?

解決

psycopg2が最も人気があるようです。私はそれで問題を抱えたことはありません。実際には、 bpgsql と呼ばれる、PostgreSQL用の純粋なPythonインターフェイスもあります。 psycopg2よりもお勧めしませんが、最近Djangoをサポートできるようになり、Cモジュールをコンパイルできない場合に役立ちます。

他のヒント

Psycopg2よりもPsycopgをお勧めします。最初のPsycopgの方が少し賢いようです。少なくとも私の経験では。 24時間年中無休で実行されているアプリケーションがあり、時々Psycopg2からランダムなメモリクラッシュ(二重解放または破損エラー)が発生していました。 PythonエラーではなくCエラーであるため、高速または簡単にデバッグできませんでした。 Pyscopgに切り替えたところ、その後クラッシュすることはありませんでした。

また、他の投稿で述べたように、 bpgsql は非常に優れた代替手段のようです。コンパイルする必要がないので、安定していて使いやすいです。唯一の悪い面は、ライブラリがスレッドセーフではないことです。

Pygresqlは素晴らしいようです。このライブラリを使用してデータベースをクエリするより直接的な方法があります。しかし、これがどれほど安定しているかはわかりません。

Psycopg1は、メンテナンスされていませんが、Psycopg2よりも(Webアプリケーションなどの)スレッドの多い環境でのパフォーマンスが優れていることで知られています。どちらもよく書かれており、堅実です。ユースケースに応じて、これら2つのいずれかを選択します。

私の経験では、psycopg2はこれに最もよく使用されるライブラリです。あなたが言ったように、それはDB API 2.0に準拠しています。

標準APIが冗長すぎて扱いにくいと思う人のために、私は役立つかもしれない小さなライブラリを作成しました:

https://github.com/hugollm/rebel

psycopg2のみを使用していますが、問題はありませんでした。

過去3年間、pg8000を問題なく使用しました。これは最新で、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