我正在尝试在运行django测试之前安装hstore扩展。为此,我已覆盖默认的 DiscoverRunner 的 setup_databases 方法。
但是,未安装扩展程序&测试显示此错误
django.db.utils.ProgrammingError: type "hstore" does not exist
这是我的代码,以覆盖默认的发现跑步者。
settings.py
TEST_RUNNER = 'project.tests.CustomDiscovererRunner'
tests.py
from django.db import DEFAULT_DB_ALIAS, connections
from django.test.runner import DiscoverRunner
class CustomDiscovererRunner(DiscoverRunner):
def setup_databases(self, **kwargs):
result = super().setup_databases(**kwargs)
connection = connections[DEFAULT_DB_ALIAS]
cursor = connection.cursor()
cursor.execute('CREATE EXTENSION IF NOT EXISTS HSTORE')
return result
答案 0 :(得分:0)
超级晚了,但是...对于新人们问同样的问题:
Django具有使用迁移创建扩展的功能(在测试之前执行),示例是HStore
但是...
对于大多数扩展,这需要具有超级用户特权的数据库用户。如果Django数据库用户没有适当的权限,则必须在拥有Django迁移权限的用户之外的Django迁移范围内创建扩展。在这种情况下,连接到Django数据库并运行查询CREATE EXTENSION IF NOT EXISTS hstore;。