ขั้นตอนในการถอนการติดตั้งแอพ Django โดยสมบูรณ์พร้อมกับการลบฐานข้อมูลคืออะไร?
db.sqlite3
และลบออกจากINSTALLED_APPS
ในได้settings.py
หรือไม่?
ขั้นตอนในการถอนการติดตั้งแอพ Django โดยสมบูรณ์พร้อมกับการลบฐานข้อมูลคืออะไร?
db.sqlite3
และลบออกจากINSTALLED_APPS
ในได้settings.py
หรือไม่?
คำตอบ:
Django <1.7 มีคำสั่งการจัดการที่สะดวกซึ่งจะให้ SQL ที่จำเป็นแก่คุณในการวางตารางทั้งหมดสำหรับแอป ดูเอกสาร sqlclearสำหรับข้อมูลเพิ่มเติม โดยทั่วไปแล้วการรัน./manage.py sqlclear my_app_name
จะทำให้คุณได้รับคำสั่ง SQL ที่ควรดำเนินการเพื่อกำจัดการติดตามทั้งหมดของแอปในฐานข้อมูลของคุณ คุณยังคงต้องคัดลอกและวาง (หรือไพพ์) คำสั่งเหล่านั้นลงในไคลเอนต์ SQL ของคุณ สำหรับ Django 1.7 ขึ้นไปให้ใช้./manage.py migrate my_app_name zero
(ดูเอกสารการย้ายข้อมูล ) ซึ่งจะเรียกใช้การล้างฐานข้อมูลโดยอัตโนมัติ
ในการลบแอปออกจากโปรเจ็กต์ของคุณสิ่งที่คุณต้องทำคือลบแอพออกจากINSTALLED_APPS
โปรเจ็กต์ของsettings.py
คุณ Django จะไม่โหลดแอปอีกต่อไป
หากคุณไม่ต้องการให้ไฟล์ของแอพค้างอยู่อีกต่อไปให้ลบไดเร็กทอรีแอพออกจากไดเร็กทอรีโปรเจ็กต์ของคุณหรือตำแหน่งอื่นบน PYTHONPATH ของคุณที่มันอยู่
(ไม่บังคับ) หากแอปเก็บไฟล์มีเดียไฟล์แคชหรือไฟล์ชั่วคราวอื่น ๆ ไว้ที่ใดที่หนึ่งคุณอาจต้องการลบไฟล์เหล่านั้นด้วย นอกจากนี้โปรดระวังข้อมูลเซสชันที่ค้างอยู่ซึ่งอาจหลงเหลือจากแอป
(ไม่บังคับ) ฉันจะลบประเภทเนื้อหาเก่า ๆ ด้วย
เช่นนั้น.
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
จะเป็น และมันจะเรียกใช้งาน SQL โดยอัตโนมัติเช่นกัน
sqlclear
ถูกลบออกใน Django 1.9 ดังนั้นคำตอบนี้ใช้ได้ดีกับเวอร์ชันก่อนหน้าเท่านั้น ดู: docs.djangoproject.com/th/1.10/releases/1.9/…
include("appname.urls")
จากโครงการurls.py
settings.py
ในINSTALLED_APPS
ไลน์ของแอพที่ไม่จำเป็น__pycache__
และmigrate
ที่โครงการของคุณ models.py
views.py
, admin.py
ท้าย ฯลฯ urls.py
แอพที่ไม่จำเป็นของคุณpython manage.py migrate
และpython manage.py syncdb
แอป django คือ "ชุด" ของไฟล์ * .py และไดเรกทอรีที่มี django-app-name ดังนั้นคุณสามารถลบทั้งโฟลเดอร์ด้วยไฟล์ * .py ทั้งหมด
ในการ "ลบ" ตารางออกจากฐานข้อมูลคุณควรใช้ DELETE FROM <app-name_table-names>
นอกจากนี้คุณต้องลบบรรทัดที่มีชื่อแอพจาก setting.py ในไดเรกทอรีราก
ในบริบทของฉันโครงการมีอยู่หลายครั้ง: ฉันมีระบบการพัฒนาเพื่อนร่วมทีมบางคนมีระบบการพัฒนามีระบบการจัดเตรียมสำหรับลูกค้าและระบบการผลิต ซึ่งหมายความว่าฉันไม่ต้องการรันคำสั่ง sql ด้วยมือ ฉันต้องการให้มันเป็นแบบอัตโนมัติ
เป้าหมาย: ลบแอปและตารางฐานข้อมูลทั้งหมด
ลบไฟล์ทั้งหมดออกจากแอปยกเว้นโฟลเดอร์ "migrations"
ดำเนินการคำสั่งนี้: manage.py makemigrations -n drop_all_tables my_app_to_remove
ไดเร็กทอรีมีลักษณะดังนี้:
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
ทิ้งmy_app_to_remove
ไว้ในไฟล์ "settings.py"
อัปเดตโครงการทั้งหมด บอกเพื่อนร่วมทีมให้อัปเดตโปรเจ็กต์และเรียกใช้การย้ายข้อมูล
ตอนนี้ลบ "my_app_to_remove" ออกจาก settings.py แล้วปรับใช้อีกครั้ง
ฉันชอบขั้นตอนจากบทความนี้มาก - รวมถึงการสนับสนุนการย้ายข้อมูล
บางทีอาจจำเป็นต้องปรับตัวในการอัปเดตโค้ดสองรายการ - แต่ดูปลอดภัยจริงๆเมื่อคุณต้องทำงานกับการปรับใช้จำนวนมาก (เช่นขั้นตอนการทดสอบเวอร์ชันเบต้าและการผลิต - ในกรณีของฉัน)