در جنگو، به طور پیشفرض از پایگاه داده SQLite برای ذخیرهسازی دادهها استفاده میشود، زیرا SQLite یک پایگاه داده سبک و ساده است که به راحتی میتوان آن را در پروژههای کوچک و آزمایشی استفاده کرد. اما برای پروژههای بزرگتر یا تولیدی، ممکن است بخواهید از پایگاههای داده دیگری مانند PostgreSQL یا MySQL استفاده کنید. در اینجا نحوه استفاده از SQLite و تغییر به پایگاههای داده PostgreSQL و MySQL در جنگو توضیح داده شده است.
۱. استفاده از SQLite در جنگو
به طور پیشفرض، جنگو از SQLite برای پایگاه داده استفاده میکند. در فایل تنظیمات پروژه (settings.py)، تنظیمات پایگاه داده به شکل زیر است:
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
در این تنظیمات:
- ENGINE: مشخص میکند که از کدام پایگاه داده استفاده شود. برای SQLite، مقدار آن django.db.backends.sqlite3 است.
- NAME: مسیر فایل پایگاه داده را مشخص میکند. در اینجا، پایگاه داده به صورت یک فایل SQLite با نام db.sqlite3 ذخیره میشود.
۲. تغییر به پایگاه داده PostgreSQL
برای استفاده از PostgreSQL، ابتدا باید PostgreSQL را نصب کرده و یک پایگاه داده جدید ایجاد کنید. سپس تنظیمات پایگاه داده را در فایل settings.py تغییر دهید.
مراحل:
-
نصب پکیج PostgreSQL برای جنگو: ابتدا باید پکیج psycopg2 را نصب کنید که یک رابط برای ارتباط با PostgreSQL است.
pip install psycopg2 -
ایجاد پایگاه داده PostgreSQL: وارد PostgreSQL شوید و یک پایگاه داده جدید ایجاد کنید:
psql -U postgres
CREATE DATABASE mydatabase;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser; -
پیکربندی در فایل settings.py: حالا باید تنظیمات پایگاه داده را به PostgreSQL تغییر دهید:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
} -
اجرای مهاجرتها: حالا که تنظیمات پایگاه داده به PostgreSQL تغییر کرده است، باید مهاجرتها را اعمال کنید تا جداول پایگاه داده ایجاد شوند.
python manage.py migrate
۳. تغییر به پایگاه داده MySQL
برای استفاده از MySQL در جنگو، ابتدا باید MySQL را نصب کرده و یک پایگاه داده جدید ایجاد کنید. سپس تنظیمات پایگاه داده را در فایل settings.py تغییر دهید.
مراحل:
-
نصب پکیج MySQL برای جنگو: ابتدا باید پکیج mysqlclient را نصب کنید که رابط جنگو با MySQL است.
pip install mysqlclient -
ایجاد پایگاه داده MySQL: وارد MySQL شوید و یک پایگاه داده جدید ایجاد کنید:
mysql -u root -p
CREATE DATABASE mydatabase;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES; -
پیکربندی در فایل settings.py: حالا باید تنظیمات پایگاه داده را به MySQL تغییر دهید:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
} -
اجرای مهاجرتها: حالا که تنظیمات پایگاه داده به MySQL تغییر کرده است، باید مهاجرتها را اعمال کنید:
python manage.py migrate
۴. انتخاب پایگاه داده در جنگو
در جنگو میتوانید تنظیمات پایگاه داده را به راحتی تغییر دهید. برای انتخاب PostgreSQL یا MySQL به جای SQLite کافی است تنظیمات مناسب را در فایل settings.py وارد کنید. انتخاب پایگاه داده بستگی به نیاز پروژه شما دارد. PostgreSQL معمولاً برای برنامههای بزرگتر و پیچیدهتر انتخاب بهتری است، در حالی که MySQL نیز برای برنامههای مشابه مناسب است.
۵. نکات تکمیلی
-
انتقال دادهها: اگر از SQLite به PostgreSQL یا MySQL مهاجرت میکنید، ممکن است نیاز باشد که دادههای قدیمی را از پایگاه داده SQLite به پایگاه داده جدید منتقل کنید. این کار معمولاً با استفاده از ابزارهای مهاجرت داده مانند pg_dump برای PostgreSQL یا mysqldump برای MySQL انجام میشود.
-
پشتیبانی از تراکنشها: PostgreSQL و MySQL از تراکنشها پشتیبانی میکنند، در حالی که SQLite در این زمینه محدودتر است. این ویژگی در پایگاههای داده بزرگتر بسیار مفید است.
نتیجهگیری
در جنگو، به راحتی میتوانید از SQLite به PostgreSQL یا MySQL تغییر دهید. فقط کافی است پکیجهای مورد نیاز را نصب کنید و تنظیمات پایگاه داده را در فایل settings.py به روز کنید. این امکان را دارید که با استفاده از PostgreSQL و MySQL به عملکرد بهتر و مقیاسپذیری بیشتری دست یابید، مخصوصاً در پروژههای بزرگ و تولیدی.
