Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Django और केवल-पढ़ने के लिए डेटाबेस कनेक्शन

मुझे एक ही समस्या का सामना करना पड़ा (Django 1.11 का उपयोग करके) और यह प्रश्न इसके लिए मेरे Google परिणामों में सबसे ऊपर था।

आपके प्रारंभिक समाधान में केवल एक महत्वपूर्ण भाग छूट रहा है। आपको Django को यह बताना होगा कि कौन से डेटाबेस मॉडल 'सी' और 'डी' उपयोग कर रहे हैं। मेरे लिए क्या काम किया:

class ExternalModel(models.Model):
    class Meta:
        managed = False
        abstract = True    
        app_label = 'support'

फिर अपने डेटाबेस राउटर को बताएं कि जब वह app_label को allow_migrate() सेक्शन में मिलता है तो उसे कैसा व्यवहार करना चाहिए:

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if app_label == 'support':
            return False
        return (db == 'default')

मुझे यकीन नहीं है कि यह Django टीम की नजर में सबसे सही-समाधान है, लेकिन प्रभाव allow_migrate() है जो उस app_label विशेषता मान के साथ परिभाषित किसी भी मॉडल के लिए False लौटा रहा है।

Django डॉक्यूमेंटेशन ऑन राउटर्स यह स्पष्ट रूप से उल्लेख नहीं करता है (या, कम से कम मॉडल कोड नमूने के साथ जो यह स्पष्ट करता है कि ओआरएम 'डीबी' के मान को allow_migrate() पर कैसे पास करता है), लेकिन 'app_label' और 'प्रबंधित' विशेषताओं के बीच आप इसे प्राप्त कर सकते हैं काम करने के लिए*।

* मेरे मामले में डिफ़ॉल्ट पोस्टग्रेज है और रीड-ओनली डेटाबेस Oracle 12 cx_Oracle के माध्यम से है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL संग्रहीत कार्यविधि वापसी मान

  2. MySQL त्रुटि पुन:उत्पन्न करें:सर्वर ने कनेक्शन बंद कर दिया (नोड.जेएस)

  3. MySQL FKs के लिए उचित नामकरण परंपरा क्या है?

  4. JAR फ़ाइलों के लिए क्लासपाथ सेट करना

  5. Amazon RDS से CSV फ़ाइल में तालिका निर्यात करना