Bagaimana mereset db di Django? Saya mendapatkan perintah 'reset' tidak ditemukan kesalahan


99

Mengikuti tutotrial Django by Example ini di sini: http://lightbird.net/dbe/todo_list.html

Tutorialnya mengatakan:

"Ini mengubah tata letak tabel kami dan kami harus meminta Django menyetel ulang dan membuat ulang tabel:

manage.py reset todo; manage.py syncdb"

meskipun, ketika saya menjalankan manage.py reset todo, saya mendapatkan kesalahan:

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

Apakah ini karena saya menggunakan sqlite3 dan bukan postgresql?

Adakah yang bisa memberi tahu saya apa perintah untuk mereset database?

Perintah: python manage.py sqlclear todomengembalikan kesalahan:

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

Jadi saya menambahkan 'rencana' ke INSTALLED_APPS saya di settings.py, dan menjalankan python manage.py sqlclear todolagi, menghasilkan kesalahan ini:

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

Jawaban:


155

resettelah diganti flushdengan Django 1.5, lihat:

python manage.py help flush

4
Sayangnya ini tidak bekerja pada aplikasi individu seperti yang dilakukan manage.py reset <appname>. Ini menghasilkan kesalahan: CommandError: Command tidak menerima argumen apa pun
Andre


terima kasih, baik untuk mengetahui, dokumentasi django publik terbaru (terakhir diubah 6 bulan yang lalu) tentang perlengkapan masih (2019-07-11) berbicara tentang 'reset': code.djangoproject.com/wiki/Fixtures
vchrizz

34

Sepertinya jawaban 'siram' akan berfungsi untuk beberapa, tetapi tidak semua kasus. Saya tidak hanya perlu mengosongkan nilai dalam database, tetapi juga membuat ulang tabel dengan benar. Saya belum menggunakan migrasi (hari-hari awal) jadi saya benar-benar perlu menghapus semua tabel.

Dua cara yang saya temukan untuk menjatuhkan semua tabel, keduanya membutuhkan sesuatu selain inti django.

Jika Anda menggunakan Heroku, jatuhkan semua tabel dengan pg: reset:

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

Jika Anda dapat memasang Ekstensi Django, ini mempunyai cara untuk melakukan penyetelan ulang lengkap:

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

6
@jonalv, Anda harus menginstal django-extensions terlebih dahulu.
edjroot

6
Juga, Anda harus memasukkannya di INSTALLED_APPSdalam settings.py.
Max Candocia

21

Mirip dengan jawaban LisaD, Django Extensions memiliki perintah reset_db hebat yang benar-benar menghapus semuanya, alih-alih hanya memotong tabel seperti yang dilakukan "flush".

python ./manage.py reset_db

Hanya membersihkan tabel tidak memperbaiki kesalahan terus-menerus yang terjadi saat saya menghapus objek. Melakukan reset_db memperbaiki masalah.


1
Ini yang saya cari, tapi saya tidak perlu memberikan --routerargumen, mungkin itu opsional sekarang, lima tahun kemudian? :)
sialan

18

jika Anda menggunakan Django 2.0 Kemudian

python manage.py flush 

akan bekerja


11

Jika Anda ingin membersihkan seluruh basis data, Anda dapat menggunakan: python manage.py flush Jika Anda ingin membersihkan tabel basis data dari aplikasi Django, Anda dapat menggunakan: python manage.py migrate appname zero


9

Dengan django 1.11, cukup hapus semua file migrasi dari migrationsfolder setiap aplikasi (semua file kecuali __init__.py). Kemudian

  1. Jatuhkan database secara manual.
  2. Buat database secara manual.
  3. Lari python3 manage.py makemigrations.
  4. Lari python3 manage.py migrate.

Dan voilla, database Anda telah diatur ulang sepenuhnya.


jika menggunakan sqlite, tidak perlu membuat database secara manual, python3 manage.py makemigrationsdan python3 manage.py migrateakan mengurusnya, setidaknya di django 2.0
toto_tico

4

Bagi saya ini memecahkan masalah.

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

Ikuti saja jawaban @ LisaD .
Mulai 2016 ( Django 1.9), Anda perlu mengetik:

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

Ini akan memberi Anda database baru yang segar dalam Heroku.


1
  1. Hapus database Anda secara manual. Pastikan Anda membuat cadangan terlebih dahulu (dalam kasus saya db.sqlite3 adalah database saya)

  2. Jalankan perintah ini manage.py migrate


1
python manage.py flush

menghapus konten db lama,

Jangan lupa untuk membuat superuser baru:

python manage.py createsuperuser
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.