2012-05-15 15 views
21

आदेशोंसभी तालिकाओं को हटाने के लिए django कमांड क्या है?

ए सभी तालिकाओं

हटाएँ वहाँ django हैं

बी सभी तालिकाओं

सी में सभी डेटा हटा के रूप में मॉडल के रूप में परिभाषित सभी तालिकाओं बनाएँ?

मुझे अभी यह नहीं मिल रहा है!

और आदेशों से मैं उन छोटे चीजें हैं जो की तरह

runserver 

आदि

+1

चेक इस बाहर - http://stackoverflow.com/questions/3414247/django-drop-all-tables- डेटाबेस से – zubinmehta

+0

अजीब क्रम: चरण ए में आप सभी तालिकाओं को हटा देते हैं। चरण बी में आप सभी तालिकाओं में सभी डेटा हटाना चाहते हैं। लेकिन चरण 1 में हटाए गए सभी टेबलों के बाद से एक टेबल नहीं है, मुझे यह नहीं मिला :-) – guettli

+1

@guettli ha ha! मुझे लगता है कि ओपी ने किसी भी सार्थक आदेश पर विचार नहीं किया, वह सिर्फ उन सभी को जानना चाहता था। –

उत्तर

29

ए सब टेबल हटाएं

manage.py sqlclear सभी टेबल

ड्रॉप करने के लिए एसक्यूएल कथन मुद्रित करेगा

बी

manage.py flush रिटर्न वाली स्थिति में करने के लिए डेटाबेस के तुरंत बाद syncdb

सी मार डाला गया था के रूप में मॉडल के रूप में परिभाषित सभी तालिकाओं बनाएं सभी तालिकाओं में सभी डेटा हटाना चाहते हैं?

manage.py syncdb INSTALLED_APPS में सभी ऐप्स के लिए डेटाबेस टेबल बनाता है जिनके तालिकाओं को पहले से ही नहीं बनाया गया है।

सभी आदेशों की एक संदर्भ के लिए इस पेज देखें: https://docs.djangoproject.com/en/dev/ref/django-admin/

लेकिन आप निश्चित रूप से south का उपयोग कर के रूप में किसी को पहले ही उल्लेख करने चाहिए। यह आपके डेटाबेस को प्रबंधित करने का सबसे अच्छा तरीका है।

एनबी: syncdb माइग्रेट के पक्ष में, डीजेगो 1.7 के बाद से हटा दिया गया है।

+4

इसके साथ समस्या यह है कि 'manage.py sqlclear' स्वयं ही काम नहीं करेगा। आपको इसे प्रत्येक ऐप नाम को अलग-अलग पास करना होगा, और यदि आप 'syncdb' का उपयोग करते हैं, तो यह मौजूदा मॉडलों में किसी भी बदलाव को प्रतिबिंबित नहीं करेगा (यही कारण है कि दक्षिण की अनुशंसा की जाती है)। –

+0

एह, मेरे अपने नोट्स "रीसेट" के लिए पूरे डीबी (ड्रॉप टेबल इत्यादि) – bharal

+2

'सिंकडबी' को' माइग्रेट 'के पक्ष में हटा दिया जाएगा, क्योंकि Django 1.7। –

3

मैं Django दक्षिण उपयोग करने की अनुशंसा कर रहे हैं मतलब है। यह आपको अपने मॉडल को अपने डेटाबेस में सिंक करने की अनुमति देता है न कि जब आप फ़ील्ड जोड़ें, लेकिन जब आप कोई फ़ील्ड/मॉडल हटाते हैं। मुझे वास्तव में यह एक Django साइट बनाने का एक आवश्यक घटक होने लगता है। एक बार स्थापित, आप की तरह एक आदेश चला सकता है:

एप्लिकेशन विस्थापित ./manage.py शून्य

आप और अधिक यहाँ सीख सकते हैं: http://south.aeracode.org/docs/about.html

10

आप ग्राहक अपने डेटाबेस के लिए स्थापित पुस्तकालय हैं, तो आप इस चला सकते हैं:

python manage.py sqlflush | python manage.py dbshell

यह टेबल ड्रॉप नहीं है, लेकिन उन्हें ट्रंकेटस।

ऐसा कोई आदेश नहीं है जो सभी एक ही समय में करता है, लेकिन यह "एक लाइनर" सभी तालिकाओं को छोड़ देगा और फिर उन्हें फिर से बना देगा। यह केवल तभी काम करेगा यदि आप ऐसी प्रणाली पर चल रहे थे जो खोल में इन उपयोगिताओं को प्रदान करता है।

echo 'from django.conf import settings; print settings.INSTALLED_APPS; quit();' | python manage.py shell --plain 2>&1 | tail -n1 | sed -r "s|^.*\((.*)\).*$|\1|; s|[',]| |g; s|django\.contrib\.||g" | xargs python manage.py sqlclear | python manage.py dbshell && python manage.py syncdb

1

मैं अपनी तालिका todrop में सक्षम था। भागो दिया आदेशों की

python manage.py sqlclear appname 

लें टिप्पणी। फिर

python manage.py dbshell 

पहले चरण में दिए गए आदेश जोड़ें। पंक्ति दर पंक्ति। जब आप पूरा कर लें, तो '.exit' टाइप करें (SQlite3 के लिए)। अपने डीबी Resync और आप जाने के लिए अच्छा होना चाहिए। यह सुनिश्चित हो, के साथ टेबल की जाँच करें:

python manage.py shell 
>>> from yourapp import yourclasses 
>>> yourviews.objects.all() 

यह एक [] लौटना चाहिए। आशा है कि ये आपकी मदद करेगा।

8

न तो manage.py sqlclear और न ही manage.py reset एक ही समय में सभी तालिकाओं को छोड़ने में सक्षम है, दोनों को appname पैरामीटर की आवश्यकता है।

आपको Django Extensions पर एक नज़र डालना चाहिए, यह आपको manage.py reset_db के साथ-साथ many other उपयोगी प्रबंधन आदेशों तक पहुंच प्रदान करता है।

3

और एक सरल oneliner Django के लिए 1.5+ सभी तालिकाओं ड्रॉप करने:

python2 manage.py sqlflush | sed 's/TRUNCATE/DROP TABLE/g'| python2 manage.py dbshell 
संबंधित मुद्दे