【问题标题】:How to extend SQLite with Python functions in Django?如何在 Django 中使用 Python 函数扩展 SQLite?
【发布时间】:2011-11-29 07:29:14
【问题描述】:

可以define new SQL functions for SQLite in Python。如何在 Django 中做到这一点,以便函数随处可用?

一个示例用例是使用GREATEST() and LEAST() PostgreSQL 函数的查询,这些函数在 SQLite 中不可用。我的测试套件运行这个查询,我希望在运行测试时能够使用 SQLite 作为数据库后端。

【问题讨论】:

    标签: python django sqlite


    【解决方案1】:

    这是一个 Django 代码示例,它通过调用 Python 的内置 max() 和 min() 使用 GREATEST() 和 LEAST() 方法扩展 SQLite:

    from django.db.backends.signals import connection_created
    from django.dispatch import receiver
    
    @receiver(connection_created)
    def extend_sqlite(connection=None, **kwargs):
        connection.connection.create_function("least", 2, min)
        connection.connection.create_function("greatest", 2, max)
    

    我只在测试中需要这个,所以我把它放在我的 test_settings.py 中。如果您在代码的其他地方有它,您可能需要测试 connection.vendor == "sqlite"

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 2013-01-09
      相关资源
      最近更新 更多