解决SQLite缺乏命名参数支持的问题

时间:2017-02-27 14:14:47

标签: python django sqlite django-testing

Django关于objects.raw()的文档说明了如何使用命名参数:

  

SQLite后端不支持字典参数;使用此后端,您必须将参数作为列表传递。

我在代码库中运行单元测试时使用SQLite,因为与真正的数据库后端相比,它的速度非常快。但由于它似乎不支持命名参数,我无法为依赖它们的某些功能编写测试。

是否有一种干净的通用方法来解决这个限制?就像在,没有诉诸可能会将代码暴露给SQL注入的黑客?

1 个答案:

答案 0 :(得分:2)

  

我在代码库中运行单元测试时使用SQLite,因为它是   与我们真正的数据库后端相比,速度非常快。

理想情况下,应对同一数据库执行单元测试。 sqlite缺少许多功能(就像你发现的那样)。如果您将测试编码为使用sqlite,您可能最终会编写函数来编写它,这意味着您的真实数据库中的某些功能刚刚变得多余。

使用keep option to manage.py,您可以更快地对mysql或postgresql进行测试。因此,确实没有必要使用sqlite进行测试。

  

是否有一种干净的通用方法来解决这个限制?如,   没有诉诸可能会将代码暴露给SQL注入的黑客?

没有。我会说使用sqlite而不是真正的数据库是一个黑客入手。