首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django中使用不同的数据库引擎进行测试和生产

如何在Django中使用不同的数据库引擎进行测试和生产
EN

Stack Overflow用户
提问于 2014-05-28 14:41:53
回答 4查看 4.3K关注 0票数 8

我在Django是个新手。我在项目中有一个应用程序,它是用测试驱动开发开发的。在生产中,我们使用MySQL作为数据库引擎,但是如果我使用MySQL运行测试:

代码语言:javascript
复制
./manage test myapp

然后,它占用了太多的时间(2-4分钟)来创建数据库,尽管测试速度相当快(大约一秒)。

如果我使用SQLite,那么测试只需要几秒钟,这对我来说是完美的。但问题是,我经常需要在MySQL上使用本地数据库的管理界面。

如何使django在sqlite上运行测试并使用mysql启动runserver?

现在,我在设置/local.py中使用这些设置,但是我应该注释/取消注释行来更改数据库,这取决于我目前所做的活动。

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',  # Use for testing
        'NAME': 'databasename.db3',
        # 'ENGINE': 'django.db.backends.mysql',  # Use if need admin on localserver
        # 'NAME': 'databasename',              
        'USER': 'myuser',                      # Not used with sqlite3.
        'PASSWORD': 'somepassword',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
        'TEST_CHARSET': "utf8",         #option to make tesing database with utf8
        'TEST_COLLATION': "utf8_general_ci",
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-28 14:43:58

一种选择是检查sys.argv中的test参数在settings.py

代码语言:javascript
复制
if 'test' in sys.argv:
    DATABASES['default']['ENGINE'] = 'django.db.backends.sqlite3'
    DATABASES['default']['NAME'] = 'databasename.db3'

不过,顺便提一句:严格地说,为测试和开发/阶段/生产设置不同的数据库后端并不是一个好主意。您可能会遇到数据库专用的“特殊”情况,这可能会花费大量的时间和头痛。

票数 12
EN

Stack Overflow用户

发布于 2015-05-04 09:33:13

你不需要做任何黑客。“-设置”-这就是你要找的

代码语言:javascript
复制
python manage.py test APP --settings settings.local
python manage.py test APP --settings settings.production
票数 6
EN

Stack Overflow用户

发布于 2014-05-28 14:50:14

只要有可能,在生产和测试中使用相同的设置总是一个好主意。它有助于更好的测试。我处理缓慢运行的测试的最好方法是使用姜戈-鼻子。它允许您重用以前创建的测试数据库。这可以大大加快测试运行速度。查看文档中的启用数据库重用。一个例子如下:

代码语言:javascript
复制
REUSE_DB=1 ./manage.py test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23914733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档