pygresql、pypgsql、psycoなどのPython用のpostgresqlモジュールをいくつか見てきました。それらのほとんどはPythonDBAPI 2.0に準拠しており、一部は現在積極的に開発されていません。どのモジュールをお勧めしますか?なんで?
6 に答える
psycopg2 が最も人気があるようです。私はそれで困ったことはありません。実際には、bpgsqlと呼ばれる PostgreSQL 用の純粋な Python インターフェースもあります。psycopg2 よりもお勧めしませんが、最近 Django をサポートできるようになり、C モジュールをコンパイルできない場合に便利です。
最初のものはもう少し安定しているように見えるので、Psycopg2よりもPsycopgをお勧めします. 少なくとも私の経験では。24 時間年中無休で実行しているアプリケーションがあり、Psycopg2 からランダムなメモリ クラッシュ (ダブル フリーまたは破損エラー) が発生することがありました。Python のエラーではなく C のエラーであるため、高速または簡単にデバッグできるものはありません。Pyscopg に切り替えたばかりで、その後はクラッシュしませんでした。
また、別の投稿で述べたように、bpgsqlは非常に優れた代替手段のようです。コンパイルする必要がないため、安定しており、使いやすいです。唯一の悪い点は、ライブラリがスレッドセーフではないことです。
Pygresql はいいようです。このライブラリを使用してデータベースにクエリを実行するより直接的な方法があります。しかし、これがどれほど安定しているかはわかりません。
過去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 でスレッドを使用したことはまだありません)。
私の経験では、psycopg2 がこれに最もよく使用されるライブラリです。あなたが言ったように、それはDB API 2.0に準拠しており、操作するための堅実なインターフェースを提供します.
標準 API が少し冗長で扱いにくいと感じている人のために、役立つ小さなライブラリを作成しました。
Psycopg1は、維持されていませんが、Psycopg2よりもスレッド数の多い環境(Webアプリケーションなど)でのパフォーマンスが優れていることで知られています。どちらもよく書かれていて堅実です。ユースケースに応じて、この2つのうちの1つを選択します。