2011-04-17 63 views
2

我有一个django项目,它使用了一个具有多个UDF的postgres数据库。这些UDF是用plpythonu编写的。由于plpyhtonu是不可信的语言,因此只有数据库超级用户才能使用它来创建UDF。这造成了一个严重的问题,因为我没有办法在测试套件中以编程方式创建它们。现在,我看到两个选项:如何测试在数据库中使用UDF的Django站点?

  1. 修改django.db.backends.creation._create_test_db来从模板创建,它已经载入我的UDF的测试数据库。这似乎很难保持。
  2. 使用MD5认证创建超级用户,并使用psycopg2加载测试套件中的UDF。这似乎不安全。

有没有那么可怕的方法,我可以做到这一点?

谢谢。

回答

0

我去了#1。这并不理想,但它工作正常。

1

我不知道PG UDF模型,只有MySQL和SQLite的。其他一些解决方法可能是:

  1. 创建一个PG实例,您只用于测试,将其隔离,以避免潜在的安全问题。数据库毕竟是便宜的。
  2. 如果UDF很简单(或测试数据的大小使它们变得简单),那么在SQLite中重新创建它们并使用该数据库进行测试。这假定您不需要测试plpython功能作为项目的一部分。
  3. 如果UDF功能比项目的其余部分稳定得多,则将UDF代码拆分为其自己的子项目,其余代码假定UDF将存在。至少这样做会使大多数代码可以自动执行,并且只有UDF代码需要手动干预才能指定密码。
相关问题