Django:根据SQL引擎运行查询

时间:2011-01-17 09:08:40

标签: sql django django-models

在Django 1.2.3中,我需要执行一些纯Django ORM函数不可行的查询。 E.g。

result = MyModel.objects.extra(select={'stddev': 'STDDEV_SAMP(value)'}).values()

但实际上,我需要在几个SQL引擎(sqllite,MySQL和MSSQL)上运行此代码。所以,我应该测试settings.DATABASES['default']['engine']并运行特定于引擎的代码。

这个问题是否有类似Django的方法? (例如,用户定义的函数放在某处,以便Django根据默认的数据库引擎运行它们。)

谢谢

1 个答案:

答案 0 :(得分:1)

存储用于访问数据的代码的适当位置在模型层中的方法中。这样,模型可以:

  • 是环保意识
  • 构建自定义查询
  • 使用内置ORM功能

这些可以交换,优化和调整,而您的应用程序的其余部分不必更改,因为应用程序的其余部分仅通过您的模型处理数据。