HN 日本語サマリー

← 一覧へ戻る
プログラミング

Docker/Brew/apt不要のPip install Postgres

Pip install Postgres – no Docker/Brew/apt (github.com)

17 pointsby leontrolski4 コメント

要約

このライブラリは、DockerやBrew、aptなどの外部依存関係なしにPythonでPostgreSQLのテストを簡単に行うためのヘルパーを提供します。各テストスレッドごとに新しいデータベースを作成したり、テンプレートやアーカイブからデータベースを復元したりできます。

全文翻訳

Postgresql Testing Docker/Brew/apt不要のシンプルなPostgresヘルパー - postgresql-binariesを使用します。インターフェースはシンプルですが、各テストスレッドごとに新しいデータベースを作成したり、テンプレートから新しいデータベースを使用したり、アーカイブを復元したりできるほど低レベルです。 pip install 'postgresql-testing[15]' pytestで使用する場合の例: import postgresql_testing @pytest.fixture(scope="session") def db() -> Iterator[str]: config = postgresql_testing.DatabaseConfig.default("testing-db") postgresql_testing.initdb(config.directory, on_existing="use") with postgresql_testing.serve(config): postgresql_testing.ensure_user(config) postgresql_testing.create_database(config, on_existing="replace") yield config.dsn 様々な便利なフラグや機能があります - ソースコードは短いため、すぐに確認できます。すぐにテストできる新しいDBを起動するには: postgresql-testing-serve postgres://testing:@localhost:8421/my-db または、どこからでも使い捨てのPostgresが必要な場合: uvx --from 'postgresql-testing[16]' postgresql-testing-serve おまけとして、explain.dalibo.comのローカルコピーもバンドルされています。 クエリプランを取得するには: EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) SELECT ... その後、コピーして: pbpaste | postgresql-testing-explain テンプレートDBやアーカイブの作成・使用のためのヘルパーがいくつかあります。将来的に、スマートなキャッシング(またはそうでないもの)を備えた「移行済みデータベースのDockerレイヤー」のようなものを考えていますが、まだ具体的な形は決まっていません。 いくつかのベンチマーク: テーブル数 | テンプレートからの作成 | ダンプからアーカイブ作成 | アーカイブから作成 ------- | -------- | -------- | -------- 100 | 80ms | 80ms (0.2MB) | 150ms 1000 | 500ms | 300ms (2MB) | 1100ms macOSでRAMディスクを使用すると、わずかに速くなります: テーブル数 | テンプレートからの作成 | ダンプからアーカイブ作成 | アーカイブから作成 ------- | -------- | -------- | -------- 100 | 70ms | 70ms | 120ms 1000 | 350ms | 300ms | 1000ms planet Goからの主張/アドバイスを参照してください。