Django में कैसे रीसेट करें db? मुझे एक कमांड 'रीसेट' मिली जिसमें त्रुटि नहीं मिली


97

उदाहरण के लिए इस Django के बाद tutotrial यहाँ: http://lightbird.net/dbe/todo_list.html

ट्यूटोरियल कहता है:

"यह हमारी तालिका लेआउट को बदलता है और हमें Django को तालिकाओं को रीसेट करने और फिर से बनाने के लिए कहना होगा:

manage.py reset todo; manage.py syncdb"

हालाँकि, जब मैं दौड़ता हूँ manage.py reset todo, मुझे त्रुटि मिलती है:

$ python manage.py reset todo                                       
- Unknown command: 'reset'

क्या यह इसलिए है क्योंकि मैं sqlite3 का उपयोग कर रहा हूं और पोस्टग्रैक्स्ल नहीं?

क्या कोई मुझे बता सकता है कि डेटाबेस को रीसेट करने के लिए कमांड क्या है?

आदेश: python manage.py sqlclear todoत्रुटि देता है:

$ python manage.py sqlclear todo    
CommandError: App with label todo could not be found.    
Are you sure your INSTALLED_APPS setting is correct?

इसलिए मैंने सेटिंग्स में अपने INSTALLED_APPS में 'todo' जोड़ा, और python manage.py sqlclear todoफिर से भाग गया, जिसके परिणामस्वरूप यह त्रुटि हुई:

$ python manage.py sqlclear todo                                      
- NameError: name 'admin' is not defined

जवाबों:


151

resetflushDjango 1.5 के साथ बदल दिया गया है , देखें:

python manage.py help flush

4
दुर्भाग्यवश यह अलग-अलग ऐप पर काम नहीं करता है जैसे कि मैनेजमेस्ट रीसेट <appname> किया। यह एक त्रुटि के परिणामस्वरूप होता है: CommandError: कमांड किसी भी तर्क को स्वीकार नहीं करता है
आंद्रे

5
सौभाग्य से, किसी ने इसे 1.5 :)
robertklep

धन्यवाद, पता करने के लिए अच्छा है, हाल ही में (6 महीने पहले संशोधित) जुड़नार के बारे में सार्वजनिक django प्रलेखन अभी भी (2019-07-11) 'रीसेट' के बारे में बात करता है: code.djangoproject.com/wiki/Fixtures
vchrizz

34

ऐसा लग रहा है कि looks फ्लश ’जवाब कुछ के लिए काम करेगा, लेकिन सभी मामलों में नहीं। मुझे डेटाबेस में मूल्यों को फ्लश करने के लिए नहीं, बल्कि तालिकाओं को ठीक से बनाने के लिए आवश्यक था। मैं अभी तक (शुरुआती दिनों में) माइग्रेशन का उपयोग नहीं कर रहा हूं, इसलिए मुझे वास्तव में सभी तालिकाओं को छोड़ने की आवश्यकता है।

सभी तालिकाओं को छोड़ने के दो तरीके, दोनों को कोर django के अलावा कुछ और की आवश्यकता है।

यदि आप हरोकू पर हैं, तो pg: रीसेट के साथ सभी तालिकाओं को छोड़ दें:

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb

यदि आप Django एक्सटेंशन स्थापित कर सकते हैं, तो यह एक पूर्ण रीसेट करने का एक तरीका है:

python ./manage.py reset_db --router=default

6
@jonalv, आपको पहले django-Extension स्थापित करना होगा ।
एडगरोट

6
साथ ही, आपको इसे इसके अंतर्गत शामिल करने की आवश्यकता INSTALLED_APPSहै settings.py
मैक्स कैंडोसिया

21

लिसाड के उत्तर के समान, Django एक्सटेंशन में एक महान रीसेट_डब कमांड है जो पूरी तरह से सब कुछ छोड़ देता है, बस "फ्लश" जैसी तालिकाओं को रौंदने के बजाय करता है।

python ./manage.py reset_db

जब मैं ऑब्जेक्ट्स को हटा रहा था तब लगातार फ़्लशिंग टेबल लगातार फ्लशिंग को ठीक नहीं कर रहा था। एक रीसेट कर रहा है_db ने समस्या को ठीक किया।


1
यह वही था जो मैं ढूंढ रहा था, लेकिन मुझे एक --routerतर्क प्रदान करने की आवश्यकता नहीं थी , हो सकता है कि अब पांच साल बाद वैकल्पिक हो? :)
डैमड


11

यदि आप पूरे डेटाबेस को साफ करना चाहते हैं, तो आप उपयोग कर सकते हैं: अजगर प्रबंधन थिंकपैड फ्लश यदि आप किसी Django ऐप के डेटाबेस तालिका को साफ करना चाहते हैं, तो आप उपयोग कर सकते हैं: अजगर प्रबंधन थिंकपैड ऐपनाम शून्य माइग्रेट करें


9

Django 1.11 के साथ, बस migrationsप्रत्येक एप्लिकेशन के फ़ोल्डर से सभी माइग्रेशन फ़ाइलों को हटा दें (सभी फ़ाइलों को छोड़कर __init__.py)। फिर

  1. डेटाबेस को मैन्युअल रूप से ड्रॉप करें।
  2. मैन्युअल रूप से डेटाबेस बनाएँ।
  3. दौड़ो python3 manage.py makemigrations
  4. दौड़ो python3 manage.py migrate

और वॉयला, आपका डेटाबेस पूरी तरह से रीसेट हो गया है।


अगर साइक्लाइट का उपयोग कर रहे हैं, तो डेटाबेस को मैन्युअल रूप से बनाने की आवश्यकता नहीं है, python3 manage.py makemigrationsऔर python3 manage.py migrateइसका ध्यान रखना होगा, कम से कम django 2.0 में
toto_tico

4

मेरे लिए यह समस्या हल हो गई।

heroku pg:reset DATABASE_URL

heroku run bash
>> Inside heroku bash
cd app_name && rm -rf migrations && cd ..
./manage.py makemigrations app_name
./manage.py migrate

3

बस @ लिसाड के उत्तर का पालन ​​करें ।
2016 तक ( Django 1.9), आपको टाइप करना होगा:

heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate

यह आपको हरोकू के भीतर एक नया नया डेटाबेस देगा।


1
  1. बस मैन्युअल रूप से आप डेटाबेस को हटा दें। सुनिश्चित करें कि आप पहले बैकअप बनाएं (मेरे मामले में db.sqlite3 मेरा डेटाबेस है)

  2. यह आदेश चलाएँ manage.py migrate


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.