2

多数の UDF を持つ postgres db を使用する django プロジェクトがあります。UDF は plpythonu で書かれています。plpyhtonu は信頼できない言語であるため、データベースのスーパー ユーザーのみがそれを使用して UDF を作成できます。これは、テスト スイート内でプログラムによってそれらを作成する方法がないという点で、深刻な問題を引き起こします。現在、次の 2 つのオプションがあります。

  1. django.db.backends.creation._create_test_db を変更して、UDF が既に読み込まれているテンプレートからテスト データベースを作成します。これはハッキーで保守が面倒なようです。
  2. MD5 認証を使用してスーパー ユーザーを作成し、psycopg2 を使用してテスト スイートに UDF をロードします。これは安全ではないようです。

これを行うことができるそれほどひどい方法はありますか?

ありがとう。

4

2 に答える 2

1

PG UDF モデルはわかりません。MySQL と SQLite のモデルだけです。他のいくつかの回避策は次のとおりです。

  1. テスト用にのみ使用する PG インスタンスを作成し、潜在的なセキュリティの問題が懸念されないように分離します。結局のところ、データベースは安価です。
  2. UDF が単純な場合 (またはテスト データ サイズが単純な場合)、それらを SQLite で再作成し、そのデータベースをテストに使用します。これは、プロジェクトの一部として plpython 機能をテストする必要がないことを前提としています。
  3. UDF 機能がプロジェクトの残りの部分よりもはるかに安定している場合は、UDF コードを独自のサブプロジェクトに分割し、残りのコードでは UDF が存在すると想定します。少なくともこれにより、ほとんどのコードを自動化できるようになり、パスワードを指定するために手動で介入する必要があるのは UDF コードだけになります。
于 2011-04-18T14:03:45.177 に答える
0

私は#1で行きました。理想的ではありませんが、問題なく動作します。

于 2011-06-08T18:54:07.153 に答える