有可能在 Python 中为 SQLite 定义新的 SQL 函数 http://docs.python.org/library/sqlite3.html#sqlite3.Connection.create_function。我怎样才能在 Django 中做到这一点,以便这些功能在任何地方都可用?
一个示例用例是使用以下命令的查询GREATEST() 和 LEAST() http://www.postgresql.org/docs/current/static/functions-conditional.html#FUNCTIONS-GREATEST-LEASTPostgreSQL 函数,在 SQLite 中不可用。我的测试套件运行此查询,并且我希望在运行测试时能够使用 SQLite 作为数据库后端。
下面是一个 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"
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)