Bagaimana prosedur untuk mencopot sepenuhnya aplikasi Django, lengkap dengan penghapusan basis data?
db.sqlite3, dan menghapusnya dari INSTALLED_APPSdalam settings.py?
Bagaimana prosedur untuk mencopot sepenuhnya aplikasi Django, lengkap dengan penghapusan basis data?
db.sqlite3, dan menghapusnya dari INSTALLED_APPSdalam settings.py?
Jawaban:
Django <1.7 memiliki perintah manajemen yang berguna yang akan memberi Anda SQL yang diperlukan untuk melepaskan semua tabel untuk sebuah aplikasi. Lihat dokumen sqlclear untuk informasi lebih lanjut. Pada dasarnya, menjalankan ./manage.py sqlclear my_app_namemembuat Anda mendapatkan pernyataan SQL yang harus dijalankan untuk menyingkirkan semua jejak aplikasi di DB Anda. Anda masih perlu menyalin dan menempelkan (atau menyalurkan) pernyataan tersebut ke klien SQL Anda. Untuk Django 1.7 dan yang lebih baru, gunakan ./manage.py migrate my_app_name zero(lihat dokumen migrasi ), yang menjalankan pembersihan database secara otomatis.
Untuk menghapus aplikasi dari proyek Anda, yang perlu Anda lakukan adalah menghapusnya dari INSTALLED_APPSdalam proyek Anda settings.py. Django tidak akan lagi memuat aplikasi.
Jika Anda tidak ingin lagi file aplikasi berkeliaran, hapus direktori aplikasi dari direktori proyek Anda atau lokasi lain di PYTHONPATH tempat ia berada.
(opsional) Jika aplikasi menyimpan file media, file cache, atau file sementara lainnya di suatu tempat, Anda mungkin ingin menghapusnya juga. Berhati-hatilah juga dengan data sesi yang tersisa yang mungkin tersisa dari aplikasi.
(opsional) Saya juga akan menghapus semua jenis konten basi.
Seperti itu.
from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
if not c.model_class():
print "deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
./manage.py migrate my_app_name zero. Dan secara otomatis akan mengeksekusi SQL juga.
sqlcleartelah dihapus di Django 1.9 jadi jawaban ini hanya bagus untuk versi sebelumnya. Lihat: docs.djangoproject.com/en/1.10/releases/1.9/…
include("appname.urls")dari proyekurls.py
settings.pydi INSTALLED_APPSbaris aplikasi yang tidak perlu__pycache__dan migrateproyek Anda models.py views.py , admin.pyakhiri , dll. urls.pyaplikasi Anda yang tidak perlupython manage.py migratedanpython manage.py syncdbaplikasi django adalah "set" file * .py dan direktori dengan nama-aplikasi-django. Jadi Anda cukup menghapus seluruh folder dengan semua file * .py
Untuk "menghapus" tabel dari DB, Anda harus menggunakan DELETE FROM <app-name_table-names>
Selanjutnya, Anda harus menghapus baris dengan nama aplikasi dari setting.py di direktori root
Saya sangat menyukai langkah-langkah dari artikel ini - ini termasuk dukungan migrasi .
Mungkin perlu diadaptasi dalam dua Pembaruan kode - tetapi terlihat sangat aman ketika Anda harus bekerja dengan banyak penerapan (seperti: tahap pengujian, versi BETA dan produksi - dalam kasus saya)
Dalam konteks saya, proyek ada beberapa kali: Saya memiliki sistem pengembangan, beberapa rekan tim memiliki sistem pengembangan, ada sistem pementasan untuk pelanggan dan sistem produksi. Ini berarti saya tidak ingin menjalankan perintah sql dengan tangan. Saya ingin ini otomatis.
Sasaran: Hapus aplikasi dan semua tabel database.
hapus semua file dari aplikasi, kecuali folder "migrasi"
Jalankan perintah ini: manage.py makemigrations -n drop_all_tables my_app_to_remove
Direktori tersebut sekarang terlihat seperti ini:
my_app_to_remove/
my_app_to_remove/__init__.py
my_app_to_remove/migrations
my_app_to_remove/migrations/0001_initial.py
my_app_to_remove/migrations/....
my_app_to_remove/migrations/0030_drop_all_tables.py
my_app_to_remove/migrations/__init__.py
Biarkan my_app_to_removedi file "settings.py".
Perbarui semua proyek. Beri tahu rekan satu tim untuk memperbarui proyek mereka dan menjalankan migrasi.
Sekarang hapus "my_app_to_remove" dari settings.py dan terapkan lagi.