Как расширить SQLite с помощью функций Python в Django? - PullRequest
5 голосов
/ 29 ноября 2011

Возможно определить новые функции SQL для SQLite в Python . Как я могу сделать это в Django, чтобы функции были доступны везде?

Примером использования является запрос, который использует функции GREATEST () и LEAST () PostgreSQL, которые недоступны в SQLite. Мой набор тестов выполняет этот запрос, и я хотел бы иметь возможность использовать SQLite в качестве базы данных при выполнении тестов.

1 Ответ

10 голосов
/ 29 ноября 2011

Вот пример кода Django, который расширяет SQLite с помощью методов GREATEST () и LEAST (), вызывая встроенные в Python max () и min ():

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".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...