2013-06-09 16 views
5

Zamanında o anda oluşturulacak olan SQL'i görmeye çalışıyorum.Django, kod değişikliklerinden sonra güncellemek için sqlall deyimine sahip olur.

birkaç aramadan sonra cevap kolayca anlaşılır değildi - ben kullanabilirsiniz biliyorum:

python manage.py syncdb --sqlall 

döner:

Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created. 

nasıl yapabilirim çıkış tümüne yönelik olmuş değişiklikler kod hiç değişmişse veritabanı?

Şu anda syncdb'ing gereken tüm uygulamalar için SQL'in tümünü oluşturmanın bir yolu var mı? Ya da sadece her bir uygulamayı açıkça belirtmem mi gerekiyor? Sadece bir sdcdb tarafından uygulanacak değişiklikler için tüm site için tüm SQL'i aramıyorum.

Değişiklikleri tanımlamak için sql oluşturması gereken birkaç uygulama var. Açıkça onları listeleyebilirim, ama benim için bunu anlamak için bir syncdb yolu var mı? Sadece sql statements istiyorsanız

cevap

6

Sen Burada

./manage.py sql <app_name> 

TÜM yüklü uygulamalar için sqlall yazdıran bir mangement command olduğunu sql statements and initial data for the app.

almak için

./manage.py sqlall <app_name> 

yapabilirsiniz. Alternatif olarak, tüm yüklü uygulamaları alan kendi yönetim komutunuzu yazabilir ve her biri için ./manage.py sql <app_name>'u çağırabilirsiniz. İlk

https://github.com/django-extensions/django-extensions/blob/master/docs/sqldiff.rst

,

sudo pip install django-extensions 

Sonraki adımda, django-uzantıları ekleyin:

+0

Teşekkürler kathikr - Ama şimdi mevcut olan tüm uygulamalar için tüm ifadeleri oluşturmanın bir yolu var mı?(bağlantınıza tıkladığımda) –

+1

Komut satırında birden fazla uygulama (boşlukla ayrılmış) belirtebilirsiniz. Ama ben yüklü "her" uygulama yazdırabileceğiniz bir yer olduğuna inanmıyorum. – karthikr

+0

Tüm uygulamalar için tüm ifadeleri üretmenin bir yolu olup olmadığını bilmek isterim - sorunun asıl konusu budur. Revize olacak. Yardım ettiğin için teşekkür ederim. –

1

Django Uzantıları paketi özel yönetiminin bir dizi django komutları vardır, bu komutların bir sqldiff olan kurulum uygulamaları

yapabilirsiniz

python manage.py sqldiff -a 
Sen farkların tam listesi yanı sıra tüm alanları (uzunluk, null, imzasız, vs)

düzgün şekilde ayarlanmasını sağlamak olacaktır ALTER TABLE tabloların uzun bir liste ile sunulan olacak

oluşturulmaz

Herhangi tablolar listelenir ve daha sonra kullanarak bunları oluşturmak için SQL dökümü

python manage.py sqlall {app_label} 

Bu sütun adı değişiklikleri için, sqldiff dener dikkati çekiyor basitçe damla değiştirildi sütunlar ve cr Yerine yenilerini sokun - Yani tüm sqldiff'i kopyalamayın ve teftiş etmeden prodüksiyona karşı çalıştırmayın.

İlgili konular