2010-12-28 4 views
7

मेरे पास उत्पादन में एक Django तैनाती है जो MySQL का उपयोग करता है।mysql से sqlite (या किसी भी दो डेटाबेस सिस्टम के बीच) Django मॉडल माइग्रेट करने के लिए कैसे?

मैं SQLite के साथ और विकास करना चाहता हूं, इसलिए मैं अपने मौजूदा डेटा को SQLite डेटाबेस में आयात करना चाहता हूं। I

एक सामान्य MySQL डंप को SQLite में परिवर्तित करने के लिए एक शेल स्क्रिप्ट here है, लेकिन यह मेरे लिए काम नहीं करता है (स्पष्ट रूप से सामान्य समस्या आसान नहीं है)।

मुझे लगता है कि Django मॉडल का उपयोग करके ऐसा करना बहुत आसान होना चाहिए। आप यह कैसे करेंगे? क्या किसी को ऐसा करने के लिए कोई स्क्रिप्ट है?

उत्तर

17

उपयोग

manage.py dumpdata > your_file.json 

उत्पादन प्रणाली (docs) से डेटा आयात करने के लिए:

2

क्या आपने manage.py dumpdata > datadump का उपयोग करने का प्रयास किया है और फिर जब नया डेटाबेस सही तरीके से स्थापित किया गया है, तो पाइथन manage.py loaddata datadump का उपयोग करें?

http://south.aeracode.org/docs/index.html

0

हो सकता है कि दक्षिण आजमाइए।

फिर विकास सिस्टम पर फ़ाइल स्थानांतरित करने और चलाने के

manage.py loaddata your_file.json 

तुम भी your_app में फ़ाइल डाल सकते हैं/जुड़नार नाम "initial_data.json" के साथ फ़ोल्डर और यह स्वत: लोड किया जाएगा जब आप चलाने "का प्रबंधन .py syncdb "(docs)।

+0

दक्षिण सबसे अच्छा स्कीमा के लिए अनुकूल है माइग्रेशन, आयात/निर्यात डेटा के लिए नहीं –

+0

@ टोस्टा: दक्षिण की स्कीमा माइग्रेशन विशेषताएं उत्कृष्ट हैं, लेकिन दक्षिण में भी अच्छी डेटा माइग्रेशन क्षमताएं हैं। – mkelley33

1

यदि आप इंस्टॉल किया गया ऐप्स में CONTENTTYPES क्या नया आधार करने के लिए आप प्रविष्टि कॉपी करने के लिए की तरह

INSTALLED_APPS = (
    'django.contrib.contenttypes', 
) 

स्क्रिप्ट का प्रयोग किया है:

from django.contrib.contenttypes.models import ContentType 

    def run(): 

     def do(Table): 
      if Table is not None: 
       table_objects = Table.objects.all() 
       for i in table_objects: 
        i.save(using='slave') 

     ContentType.objects.using('slave').all().delete() 

     for i in ContentType.objects.all(): 
      do(i.model_class()) 

देखें पूर्ण मैनुअल here

+0

मुझे लगता है कि आप किसी चीज़ का उल्लेख करना भूल गए हैं। यहां मेरे लिए काम की गई चीजें हैं 1) सही सेटिंग्स सुनिश्चित करें (यानी यदि कोई सामग्री टाइप नहीं है)। फिर 'python manage.py syncdb --डेटाबेस दास 'या' python manage.py माइग्रेट --डेटाबेस दास'। 2) फ़ंक्शन 'रन()' कुछ लिखें जहां लिखें। 3) इसे 'python manage.py shell' से कॉल करें या एक django कस्टम कमांड बनाएं (https://docs.djangoproject.com/en/1.9/howto/custom-management-commands/)[https://docs.djangoproject .com/en/1.9/howto/custom-management-command /] और इसका उपयोग करें। –

+0

मेरा मानना ​​है कि यह अन्य डीबीएस के साथ भी काम करेगा। –

+0

यह बहुत पुराना उत्तर है। नवीनतम Django के पास 'डंपडाटा' का बेहतर संस्करण है, इसलिए आपको डीबी के बीच स्विच करने के लिए कस्टम समाधान करने की आवश्यकता नहीं है। – inoks

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