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

Django और postgresql स्कीमा

चूंकि Django बॉक्स से बाहर डेटाबेस स्कीमा पोस्टग्रेस का समर्थन नहीं करता है, इसलिए इसे काम करने के लिए, डेटाबेस राउटर का उपयोग करें।

मैंने इसे आज़माने के लिए एक परीक्षण डेटाबेस बनाया है, इसे यहां पुन:पेश करने का तरीका बताया गया है:

psql के साथ एक परीक्षण डेटाबेस बनाएँ:

CREATE USER tester WITH PASSWORD 'lol so easy';
CREATE DATABASE multi_schema_db WITH OWNER tester;
CREATE SCHEMA samples AUTHORIZATION tester;
CREATE TABLE samples.my_samples (
  id          INTEGER   NOT NULL PRIMARY KEY,
  description CHAR(255) NOT NULL
);

सेटिंग्स में स्कीमा को विभिन्न डेटाबेस कनेक्शन के रूप में जोड़ें, HOST add जोड़ना याद रखें "सहकर्मी प्रमाणीकरण विफल" त्रुटि से बचने के लिए।

DATABASES = {

'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'OPTIONS': {
        'options': '-c search_path=django,public'
    },
    'NAME': 'multi_schema_db',
    'USER': 'tester',
    'PASSWORD': 'lol so easy',
    'HOST': 'localhost'

},

'samples': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'OPTIONS': {
        'options': '-c search_path=samples,public'
    },
    'NAME': 'multi_schema_db',
    'USER': 'tester',
    'PASSWORD': 'lol so easy',
    'HOST': 'localhost'
},

}

इसके बाद MySample बनाएं मॉडल:

from django.db import models

class MySample(models.Model):
    description = models.CharField(max_length=255, null=False)

    class Meta:
        managed = False
        db_table = 'my_samples'

नमूना डेटाबेस के लिए सभी नमूना-संबंधित प्रश्नों को निर्देशित करने के लिए एक डेटाबेस राउटर बनाएं:

from database_test.models import MySample

ROUTED_MODELS = [MySample]


class MyDBRouter(object):

    def db_for_read(self, model, **hints):
        if model in ROUTED_MODELS:
            return 'samples'
        return None

    def db_for_write(self, model, **hints):
        if model in ROUTED_MODELS:
            return 'samples'
        return None

मूल रूप से, राउटर ROUTED_MODELS में निर्दिष्ट सभी मॉडलों को डेटाबेस कनेक्शन samples पर रूट करेगा और अन्य सभी मॉडलों के लिए कोई नहीं लौटाएं। यह उन्हें default . पर रूट कर देगा डेटाबेस कनेक्शन।

अंत में राउटर को अपनी सेटिंग्स में जोड़ें.py

DATABASE_ROUTERS = ('database_test.db_router.MyDBRouter',)

और अब MySample . के लिए क्वेरी करते समय मॉडल, यह samples . से डेटा लाएगा स्कीमा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उसी INSERT के दौरान दूसरे कॉलम में सीरियल कॉलम का संदर्भ मान

  2. आयात त्रुटि क्या है:प्रतीक नहीं मिला:_PQencryptPasswordConn का अर्थ है और मैं इसे कैसे ठीक करूं?

  3. sqlalchemy.exc.NoSuchModuleError:प्लगइन लोड नहीं कर सकता:sqlalchemy.dialects:postgres

  4. सबसे तेज़ जाँच करें कि क्या PostgreSQL में पंक्ति मौजूद है

  5. PostgreSQL माइग्रेशन के लिए शीर्ष ओपन सोर्स टूल्स