- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试按照 Django testing docs 中的信息测试在 PostGIS 数据库上运行的 Django 应用程序.
通常我通过复制模板创建一个新数据库:
(作为用户 postgres)
createdb -T template_postgis -O lizard test_geodjango2
当我运行 ./manage.py test
时,我收到以下消息:
Creating test database...Got an error creating the test database: permission denied to create database
Type 'yes' if you would like to try deleting the test database 'test_geodjango2', or 'no' to > cancel:
让系统创建数据库的最佳方式是什么?
最佳答案
可能是您的 DATABASE_USER
没有创建新数据库/模式的权限。
编辑
如果您阅读 Django test
命令的源代码,您会发现它总是创建一个测试数据库。此外,它会修改您的设置以引用此测试数据库。
看这个:http://docs.djangoproject.com/en/dev/topics/testing/#id1
你应该做的是使用 fixtures .以下是我们的做法。
从您的模板数据库中,创建一个“fixture”。使用 manage.py dumpdata
命令创建包含所有模板数据的 JSON 文件。 [提示,--indent=2
选项为您提供可编辑和修改的可读 JSON。]
将它放在应用程序下的 fixtures
目录中。
在您的 TestCase 类定义中引用 fixtures 文件。这将在运行测试之前加载夹具。
class AnimalTestCase(TestCase):
fixtures = ['mammals.json', 'birds']
def testFluffyAnimals(self):
etc.
fixtures 替换了你的模板数据库。有了固定装置后,您就不再需要模板了。
关于python - 如何为 Django 测试自动创建 postgis 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1037388/
我是一名优秀的程序员,十分优秀!