آموزش اتصال جنگو به دیتابیس قدیمی
در حالی که جنگو برای توسعه برنامه های جدید ساخته شده است، اتصال آن به پایگاه داده های قدیمی کاملاً امکان پذیر است. جنگو شامل چند ابزار برای خودکارسازی هر چه بیشتر این فرآیند است.
# قدم اول: اتصال به دیتابیس
شما باید به جنگو بگویید که پارامترهای اتصال پایگاه داده شما چیست و نام پایگاه داده چیست. این کار را با ویرایش فایل settings.py بخش DATABASES و تخصیص مقادیر به کلیدهای Name, Engine, User, Password, Host, Port برای اتصال «پیشفرض» انجام میشود. به عنوان مثال به شکل زیر باید عمل کنید و اطلاعات مربوط به دیتابیس را مشخص کنید:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'classicmodels', # database name
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
دوره پیشنهادی: دوره آموزش تست نویسی در جنگو
# قدم دوم: تولید خودکار مدلها
جنگو با ابزاری به نام inspectdb ارائه میشود که میتواند مدلهایی را با بررسی یک پایگاه داده موجود ایجاد کند. با اجرای این دستور می توانید خروجی را مشاهده کنید:
$ python manage.py inspectdb
همچنین میتوانید خروجی را به شکل فایل ذخیره کنید:
$ python manage.py inspectdb > models.py
این ویژگی به عنوان یک میانبر استفاده میشود و برای اطلاعات بیشتر میتوانید به مستندات inspectdb جنگو مراجعه کنید.
هنگامی که مدل خود را ایجاد کردید، نام فایل را models.py بگذارید و آن را در app مورد نظر خود قرار دهید. سپس برنامه را به تنظیمات INSTALLED_APPS خود اضافه کنید.
به طور پیش فرض، inspectdb مدل های مدیریت نشده ایجاد می کند. یعنی managed = False
در کلاس متای مدل به جنگو می گوید که ایجاد، اصلاح و حذف هر جدول را مدیریت نکند:
class Person(models.Model):
id = models.IntegerField(primary_key=True)
first_name = models.CharField(max_length=70)
class Meta:
managed = False
db_table = 'CENSUS_PERSONS'
اگر میخواهید به جنگو اجازه دهید چرخه کار این مدل را مدیریت کند، باید گزینه managed بالا را به True تغییر دهید (یا آن را حذف کنید زیرا True مقدار پیشفرض آن است).
در مرحله بعد، دستور migrate را اجرا کنید تا هر گونه رکورد اضافی مورد نیاز پایگاه داده مانند permissions و content types را نصب کنید:
$ python manage.py migrate