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

मैं django माइग्रेशन में कच्चे SQL को कैसे निष्पादित करूं?

एक तरफ़ा:

मुझे ऐसा करने का सबसे अच्छा तरीका रनएसक्यूएल का उपयोग करना है:

माइग्रेशन में RunSQL वर्ग होता है। ऐसा करने के लिए:

  1. ./manage.py makemigrations --empty myApp
  2. बनाई गई माइग्रेशन फ़ाइल को शामिल करने के लिए संपादित करें:

operations = [ migrations.RunSQL('RAW SQL CODE') ]

जैसा कि नथानिएल नाइट ने उल्लेख किया है, RunSQL एक reverse_sql भी स्वीकार करता है माइग्रेशन को उलटने के लिए पैरामीटर। विवरण के लिए दस्तावेज़ देखें

दूसरा तरीका

जिस तरह से मैंने शुरू में अपनी समस्या का समाधान किया वह post_migrate . का उपयोग कर रहा था मेरे कच्चे SQL को निष्पादित करने के लिए एक कर्सर को कॉल करने के लिए संकेत।

मुझे अपने ऐप में जो कुछ जोड़ना था वह यह था:

__init__.py . में myApp ऐड का:

default_app_config = 'myApp.apps.MyAppConfig'

एक फ़ाइल बनाएँ apps.py :

from django.apps import AppConfig
from django.db.models.signals import post_migrate
from myApp.db_partition_triggers import create_partition_triggers


class MyAppConfig(AppConfig):
    name = 'myApp'
    verbose_name = "My App"

    def ready(self):
        post_migrate.connect(create_partition_triggers, sender=self)

नई फ़ाइल db_partition_triggers.py :

from django.db import connection


def create_partition_triggers(**kwargs):
    print '  (re)creating partition triggers for myApp...'
    trigger_sql = "CREATE OR REPLACE FUNCTION...; IF NOT EXISTS(...) CREATE TRIGGER..."
    cursor = connection.cursor()
    cursor.execute(trigger_sql)
    print '  Done creating partition triggers.'

अब हर manage.py syncdb . पर या manage.py migrate इस फ़ंक्शन को कहा जाता है। इसलिए सुनिश्चित करें कि यह CREATE OR REPLACE का उपयोग करता है और IF NOT EXISTS . तो यह मौजूदा कार्यों को संभाल सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक बहु-सर्वर वातावरण में, यदि किसी साइट में 15 मिलियन से अधिक निष्क्रियता है, तो सर्वर PostgreSQL डेटाबेस से कनेक्शन खो देता है

  2. डेबेज़ियम पोस्टग्रेज़ काफ्का कनेक्टर दिल की धड़कन एलएसएन नहीं कर रहा है

  3. sqlalchemy+psycopg2 में हमेशा बदलते पासवर्ड को कैसे हैंडल करें?

  4. पंक्ति को अपडेट करते समय मुझे डुप्लीकेट कुंजी त्रुटि क्यों मिलेगी?

  5. जाँच करें कि क्या कोई डेटाबेस हिट किए बिना संबद्धता मौजूद है