2011-11-29 21 views
5

define new SQL functions for SQLite in Python पर यह संभव है। मैं Django में यह कैसे कर सकता हूं ताकि कार्य हर जगह उपलब्ध हो?Django में पाइथन कार्यों के साथ SQLite कैसे विस्तारित करें?

एक उदाहरण उपयोग केस एक क्वेरी है जो GREATEST() and LEAST() PostgreSQL फ़ंक्शंस का उपयोग करता है, जो SQLite में उपलब्ध नहीं हैं। मेरा टेस्ट सूट इस क्वेरी को चलाता है, और परीक्षण चलाने के दौरान मैं डेटाबेस बैकएंड के रूप में SQLite का उपयोग करने में सक्षम होना चाहता हूं।

उत्तर

10

यहाँ फोन करके एक Django कोड उदाहरण है कि सबसे बड़ी() और कम से कम() के तरीकों के साथ 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" का परीक्षण करने की आवश्यकता हो सकती है।

+0

बहुत बहुत धन्यवाद !! –

संबंधित मुद्दे