اگر در حال ساختن یک پروژه Django هستید و نمی دانید از کدام پایگاه داده استفاده می شود ، PostgreSQL یک انتخاب عالی است. این قابل اعتماد ، سریع ، پر از ویژگی های قدرتمند است و به زیبایی با Django کار می کند.

من از آن در چندین پروژه استفاده کرده ام-از برنامه های وب کوچک گرفته تا سیستم عامل های در مقیاس بزرگ-و هرگز ناامید نمی شود.

در این پست ، من شما را از طریق روش اتصال postgresql با گام به گام Django پیاده می کنم.

بیایید شروع کنیم

آنچه را پوشش خواهیم داد:

  1. چرا از postgresql با django استفاده می کنیم؟

  2. آنچه شما نیاز دارید

  3. روش استفاده از postgresql در جنگو

    • مرحله 1: نصب postgresql

    • مرحله 2: آداپتور postgresql را برای پایتون نصب کنید

    • مرحله 3: ایجاد یک پروژه Django (اگر هنوز این کار را نکرده اید)

    • مرحله 4: یک پایگاه داده PostgreSQL ایجاد کنید

    • مرحله 5: تنظیمات Django را برای استفاده از PostgreSQL به روز کنید

    • مرحله ششم: مهاجرت را اجرا کنید

    • مرحله 7: اتصال را آزمایش کنید

  4. مسائل مشترک (و رفع)

  5. اختیاری: برای تنظیمات بهتر از DJ-Database-URL استفاده کنید

  6. سوالات متداول

    • آیا PostgreSQL از SQLite برای Django بهتر است؟

    • آیا من نیاز به نصب postgresql دارم روی سرور تولید من؟

    • آیا باینری Psycopg2 برای تولید بی خطر است؟

    • آیا می توانم از sqlite به postgresql در اواسط پروژه تغییر کنم؟

  7. پیچیدن

  8. منابع بیشتر

چرا از postgresql با django استفاده می کنیم؟

PostgreSQL یک بانک اطلاعاتی محبوب و منبع باز است که به دلیل عملکرد ، انعطاف پذیری و ویژگی های قدرتمند مانند:

  • انواع داده های پیشرفته (Json ، Arrays و SO روی)

  • جستجوی کامل متن

  • پشتیبانی از سؤالات پیچیده

  • یکپارچگی و قابلیت اطمینان داده ها

Django به طور رسمی PostgreSQL را به عنوان برجسته ترین پایگاه داده پایگاه داده پشتیبانی می کند. اگر قصد ایجاد یک برنامه وب جدی را دارید ، PostgreSQL معمولاً بهترین پایگاه داده برای جفت شدن با Django است.

آنچه شما نیاز دارید

قبل از شروع ، اطمینان حاصل کنید که موارد زیر را دارید:

  • پایتون نصب شده (3.7 یا بالاتر بهترین است)

  • Django نصب شده (من از نسخه 4.x استفاده می کنم)

  • postgresql نصب و اجرا شده است

  • psycopg2 یا psycopg2-binary (این آداپتور است که به Django اجازه می دهد تا با PostgreSQL صحبت کند)

روش استفاده از postgresql در جنگو

در اینجا روش شروع کار آمده است:

مرحله 1: نصب postgresql

اگر هنوز PostgreSQL را نصب نکرده اید ، می توانید آن را از وب سایت رسمی PostgreSQL بگیرید. این کار می کند روی ویندوز ، مکوس و لینوکس.

حتماً هنگام تنظیم آن ، نام کاربری ، رمز عبور و پایگاه داده را به خاطر بسپارید – بعداً به آنها احتیاج دارید.

مرحله 2: آداپتور postgresql را برای پایتون نصب کنید

جنگو برای برقراری ارتباط با PostgreSQL به کمی کمک نیاز دارد. این جایی است که psycopg2 وارد می شود

می توانید با استفاده از آن نصب کنید pip:

pip install psycopg2-binary

نکته: -binary نصب نسخه آسانتر است و برای اکثر افراد کار می کند. اگر بعداً با مشکلات روبرو شدید ، می توانید به آن تغییر دهید psycopg2 (غیر باینری).

مرحله 3: ایجاد یک پروژه Django (اگر هنوز این کار را نکرده اید)

اگر هنوز یک پروژه ایجاد نکرده اید ، با:

django-admin startproject myproject
cd myproject

این ساختار پروژه اصلی را به شما می دهد.

مرحله 4: یک پایگاه داده PostgreSQL ایجاد کنید

اکنون ، مشتری PostgreSQL خود را باز کنید (مانند psql یا pgadmin) ، و یک پایگاه داده جدید ایجاد کنید:

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 روی DATABASE mydatabase TO myuser;

این یک پایگاه داده و کاربر را با مجوزهای مناسب تنظیم می کند. تعویض کردن mydatabaseبا myuserوت mypassword با هر مقداری که ترجیح می دهید.

مرحله 5: تنظیمات Django را برای استفاده از PostgreSQL به روز کنید

اکنون وقت آن رسیده است که به Django بگویید که از پایگاه داده جدید PostgreSQL خود استفاده کند.

باز myproject/settings.py و به دنبال DATABASES تنظیم پیش فرض را جایگزین کنید sqlite3 بخش با این:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

این به Django می گوید:

  • از postgresql استفاده کنید (django.db.backends.postgresql)

  • به یک پایگاه داده محلی به نام وصل شوید mydatabase

  • از کاربر و رمز عبوری که قبلاً تنظیم کرده اید استفاده کنید

مرحله ششم: مهاجرت را اجرا کنید

اکنون که همه چیز به هم وصل شده است ، اجازه دهید جداول پایگاه داده Django به آن نیاز داشته باشیم:

python manage.py migrate

اگر همه چیز کار می کند ، Django را در حال ایجاد جداول در PostgreSQL خواهید دید. بدون خطا؟ شما خوب هستید که بروید!

مرحله 7: اتصال را آزمایش کنید

بیایید همه آن را با ایجاد یک سوپر مصرف کننده (حساب مدیر) آزمایش کنیم:

python manage.py createsuperuser

پیگیری ها را دنبال کنید ، سپس اجرا کنید:

python manage.py runserver

مرورگر خود را باز کنید و به آنجا بروید http://127.0.0.1:8000/adminبشر با حساب Superuser خود وارد شوید. شما در داشبورد مدیر Django خواهید بود – و بله ، همه اینها توسط PostgreSQL اکنون پشتیبانی می شود!

مسائل مشترک (و رفع)

در اینجا چند مورد وجود دارد که ممکن است شما را به سمت بالا سفر کند:

  • خطا: psycopg2.errors.UndefinedTable: این معمولاً به این معنی است که شما دویدن را فراموش کرده اید migrateبشر

  • نمی توانید به پایگاه داده متصل شوید: نام پایگاه داده ، کاربر و رمز عبور خود را دوبار بررسی کنید. اطمینان حاصل کنید که PostgreSQL در حال اجرا است.

  • نقش وجود ندارد: ممکن است فراموش کرده باشید که کاربر را در PostgreSQL ایجاد کنید ، یا از نام اشتباه در آن استفاده کرده اید settings.pyبشر

اختیاری: استفاده کنید dj-database-url برای تنظیمات بهتر

اگر قصد دارید بعداً برنامه خود را مستقر کنید (مخصوصاً روی خدماتی مانند Heroku) ، مدیریت تنظیمات پایگاه داده شما از طریق URL تمیزتر است.

بسته یاور را نصب کنید:

pip install dj-database-url

سپس در شما settings.py:

import dj_database_url

DATABASES = {
    'default': dj_database_url.config(default='postgres://myuser:mypassword@localhost:5432/mydatabase')
}

این به شما امکان می دهد پیکربندی پایگاه داده خود را از یک متغیر محیط کنترل کنید ، که امن تر و انعطاف پذیر تر است.

سوالات متداول

آیا PostgreSQL از SQLite برای Django بهتر است؟

برای یادگیری یا پروژه های کوچک ، SQLite خوب است. اما برای برنامه های جدی با تعداد زیادی از کاربران یا نمایش داده های پیشرفته ، PostgreSQL بسیار بهتر است.

آیا من نیاز به نصب postgresql دارم روی سرور تولید من؟

بله – مگر اینکه از یک راه حل میزبان postgreSQL مانند Amazon RDS ، Heroku Postgres یا Supabase استفاده کنید.

آیا باینری Psycopg2 برای تولید بی خطر است؟

بله ، برای بیشتر موارد اما برخی توصیه می کنند که به نسخه غیر باینری تغییر دهید (psycopg2) در تولید برای کنترل بهتر.

آیا می توانم از sqlite به postgresql در اواسط پروژه تغییر کنم؟

بله ، اما شما باید داده های خود را مهاجرت کنید. ابزارهایی مانند Django dumpdata وت loaddata می تواند به آن کمک کند

پیچیدن

استفاده از postgresql در django یک قدم عالی به جلو است که می خواهید برنامه های واقعی و آماده تولید را بسازید.

هنگامی که مراحل را می دانید ، تنظیمات بسیار ساده است و سود عملکرد ارزش آن را دارد.

بیا روی x.com/_udemezue و وبلاگ من را در حالی که در آن هستید بررسی کنید!

منابع بیشتر

اگر می خواهید عمیق تر شیرجه بزنید ، در اینجا چند لینک وجود دارد که توصیه می کنم:

  • اسناد تنظیمات پایگاه داده Django

  • مقام رسمی Documentation

  • با استفاده از postgresql با django (پایتون واقعی)