2

我有一个 django 项目,它使用带有许多 UDF 的 postgres 数据库。UDF 是用 plpythonu 编写的。由于 plpyhtonu 是一种不受信任的语言,因此只有数据库超级用户才能使用它来创建 UDF。这带来了一个严重的问题,因为我无法在测试套件中以编程方式创建它们。现在我看到两个选项:

  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 回答