2011-04-17 62 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代碼需要手動干預才能指定密碼。
相關問題