Veritabanının kaldırılmasıyla birlikte bir Django uygulamasını tamamen kaldırma prosedürü nedir?
db.sqlite3
kaldırıp INSTALLED_APPS
içerisinden kaldırmanız sorun olur settings.py
mu?
Veritabanının kaldırılmasıyla birlikte bir Django uygulamasını tamamen kaldırma prosedürü nedir?
db.sqlite3
kaldırıp INSTALLED_APPS
içerisinden kaldırmanız sorun olur settings.py
mu?
Yanıtlar:
Django <1.7, bir uygulamanın tüm tablolarını bırakmanız için size gerekli SQL'i verecek kullanışlı bir yönetim komutuna sahiptir. Daha fazla bilgi için sqlclear belgelerine bakın . Temel olarak, çalıştırmak ./manage.py sqlclear my_app_name
, DB'nizdeki uygulamanın tüm izlerinden kurtulmak için yürütülmesi gereken SQL ifadelerini almanızı sağlar. Yine de bu ifadeleri SQL istemcinize kopyalayıp yapıştırmanız (veya yönlendirmeniz) gerekir. Django 1.7 ve üstü için, veritabanı temizlemesini otomatik olarak çalıştıran ./manage.py migrate my_app_name zero
( geçiş belgelerine bakın) kullanın .
Uygulamayı projenizden kaldırmak için tek yapmanız gereken onu INSTALLED_APPS
projenizden kaldırmaktır settings.py
. Django artık uygulamayı yüklemeyecek.
Uygulama dosyalarının artık ortalıkta dolaşmasını istemiyorsanız, uygulama dizinini proje dizininizden veya PYTHONPATH'ınızda bulunduğu başka bir konumdan silin.
(isteğe bağlı) Uygulama, medya dosyalarını, önbellek dosyalarını veya diğer geçici dosyaları bir yerde sakladıysa, bunları da silmek isteyebilirsiniz. Ayrıca, uygulamadan kalabilecek kalıcı oturum verilerine karşı da dikkatli olun.
(isteğe bağlı) Eski içerik türlerini de kaldırırım.
Öyle gibi.
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
. Ve otomatik olarak SQL'i de çalıştıracaktır.
sqlclear
Django 1.9'da kaldırıldı, bu nedenle bu yanıt yalnızca önceki sürümler için iyidir. Bakınız: docs.djangoproject.com/en/1.10/releases/1.9/…
include("appname.urls")
projeden bir referansı kaldırmanız gerekir urls.py
settings.py
inINSTALLED_APPS
gereksiz uygulamanın hattı__pycache__
vemigrate
projenizde models.py
views.py
, admin.py
sonlandır vb. urls.py
gereksiz uygulamanızdaki tüm bağlantıları silinpython manage.py migrate
vepython manage.py syncdb
django uygulaması * .py dosyalarının bir "kümesidir" ve django-app-adına sahip bir dizindir. Böylece, tüm * .py dosyalarını içeren tüm klasörü silebilirsiniz.
Tabloları DB'den "kaldırmak" için kullanmalısınız DELETE FROM <app-name_table-names>
Ayrıca, bir kök dizindeki setting.py'den uygulama-adı içeren satırları silmeniz gerekir.
Benim bağlamımda projeler birkaç kez var: Bir geliştirme sistemim var, bazı takım arkadaşlarımın bir geliştirme sistemi var, müşteri için bir aşamalandırma sistemi ve bir üretim sistemi var. Bu, sql komutlarını elle çalıştırmak istemediğim anlamına geliyor. Otomatik olmasını istiyorum.
Hedef: Uygulamayı ve tüm veritabanı tablolarını kaldırın.
"taşıma" klasörü dışındaki tüm dosyaları uygulamadan kaldırın
Bu komutu yürütün: manage.py makemigrations -n drop_all_tables my_app_to_remove
Dizin şimdi şöyle görünüyor:
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
Ayrılmak my_app_to_remove
"Settings.py" dosyasında .
Tüm projeleri güncelleyin. Ekip arkadaşlarına projelerini güncellemelerini ve geçişleri yapmalarını söyleyin.
Şimdi "my_app_to_remove" öğesini settings.py'den kaldırın ve yeniden dağıtın.
Bu makaledeki adımları gerçekten çok seviyorum - buna geçiş dahil desteği .
Belki iki kod güncellemesine uyarlanması gerekiyor - ancak birçok dağıtımla çalışmanız gerektiğinde gerçekten güvenli görünüyor (benim durumumda test aşaması, BETA sürümü ve üretim gibi)