فصل پنجم: نصب و راه اندازی پایگاه داده
فهرست مطالب
نصب پایگاه داده postgresql
از وبسایت PostgreSQL به آدرس postgresql.org، اپلیکیشن postgres را دانلود و آن را نصب میکنیم.
download
از بخش دانلود وبسایت سیستم عامل خود (windows, linux, macOS) را انتخاب میکنیم حالا روی لینک Download the installer (نوشته شده در ابتدای صفحه) کلیک میکنیم و یکی از ورژن ها را دانلود میکنیم.
installation
مسیرهای نصبی را ترجیحاً همان مسیر پیشفرض مثله (C:\Program File\PostgreSQL\<version>) بگذارید باشد./ تیک گزینه ها را بگذارید به صورت پیشفرض فعال باشند.
در ادامه نصب، از ما یک رمز درخواست میکنه که برای استفاده از postgres به آن نیاز داریم./ رمز قابل مشاهده نیست پس حواسمون باشه چه کاراکترهایی وارد میکنیم.
این رمز برای super-user هست./ نام کاربری برای super-user به صورت پیشفرض postgres میباشد. / از آن برای بخش های مدیریتی استفاده میشود.
فیلد port و سایر موارد را هم بگذارید پیشفرض بمانند./ حالا منتظر میمانیم تا نصب کامل شود.
در پنجره Stack Builder که باز شده postgres را انتخاب و next را میزنیم ، در صفحه بعدی اگر هرکدام از این ابزارها را نیاز داشتید می توانید انتخاب کنید فعلا با زدن دکمه cancel از آنها صرف نظر میکنیم.
کار با SQL Shell (psql)
میتوان با جستجو sql shell یا psql آنرا اجرا کنیم.
اگر فیلدی را خالی رها کرده و اینتر را بزنیم از مقدار پیشفرض داخل [] استفاده میکند./ یا اینکه میتوانیم مقدار مدنظر خود را وارد کنیم.
برای اولین بار هیچ کاربری بجز super-user وجود ندارد پس username را همین پیشفرض انتخاب میکنیم و در قسمت password، رمزی را که هنگام نصب postgres مشخص کردیم را باید وارد کنیم.
sql shell:
Server [local host]: <your_host or blank> Database [postgres]: <your_database_name or blank> Port [5432]: <your_port or blank> Username [postgres]: <ypur_username or blank> Password for user postgres: <password during installation>
بعد از این تنظیمات، دیتابیس آماده استفاده و کد زدن میباشد.
توی دستورات SQL باید انتهای کد از علامت (;) استفاده کنیم.
ایجاد یک user جدید
sql shell:
create user <name> with encrypted password 'password';
پس از ایجاد یک کاربر جدید برای دفعات بعدی که خواستیم وارد psql, sql shell بشویم چنانچه خواستیم از طریق این کاربر جدید وارد شویم باید همین رمزی که در بالا برایش مشخص کرده ایم را بزنیم نه رمز super-user را.
وقتی برای فیلد Username یکی از نام کاربری ها را که ایجاد کرده ایم وارد کنیم در بخش Password مینویسه رمز این کاربر را وارد کنید./ پس هر کاربر ایجاد شده با رمز خودش وارد میشود.
دادن دسترسی کامل به کاربر
sql shell:
grant all privileges on database <database-name> to <user>;
به این ترتیب به کاربر مدنظر روی آن دیتابیس دسترسی کامل میدهیم.
با دستور \q
، از psql خارج میشود.
sql shell:
\q;
با دستور \du
، لیست userها را نشان میدهد.
sql shell:
\du;
با دستور \dt
، لیست جدول های دیتابیس فعلی را نشان میدهد.
sql shell:
\dt;
با دستور \l
، لیست دیتابیس ها را نشان میدهد.
sql shell:
\l;
حذف user
sql shell:
drop owned by <user>; drop user <user>
اولین دستور، دسترسی های کاربر را از بین میبرد.
دومین دستور، کاربر را حذف میکند.
همچنین میتوان table و دیتابیس ها را حذف کرد:
sql shell:
drop table <table-name>
sql shell:
drop database <database-name>
ایجاد دیتابیس
sql shell:
create database <database-name>;
سوییچ کردن بین دیتابیس ها
sql shell:
\c <database-name>;
اسم دیتابیسی که مشخص میکنیم باید توی لیست دیتابیس ها موجود باشه./ مگرنه ارور میده
استفاده از psql توی cmd
باید آنرا توی متغیرهای محیطی(Environment Variables) ویندوز تعریف کنیم.
حالا چطور؟
به محل نصب postgres رفته و آدرس دایرکتوری bin را برمیداریم.
مثله (C:\Program File\PostgreSQL\16\bin) ممکنه ورژن برای شما متفاوت باشد.
حالا Environment Variables را جستجو کرده و آنرا اجرا میکنیم./ حالا روی path دابل کلیک کرده با new یک مسیر جدید ایجاد کرده و مسیر bin را آنجا paste میکنیم.(مثله: C:\Program File\PostgreSQL\16\bin)
حالا توی cmd با نوشتن psql میتوان از postgres استفاده کرد.
کار با pgAdmin
وقتی وارد pgadmin میشویم از ما رمز درخواست میکند که همان رمز super-user میباشد(رمزی که در هنگام نصب وارد کردیم)
اپلیکیشن pgadmin حالت گرافیکی postgres برای کار و مدیریت کردن دیتابیس هست./ایجاد(database, user, table)، حذف و یا آپدیت آنها
وقتی در محیط گرافیکی یکی از موارد بالا مثل ایجاد یک دیتابیس را انجام میدهیم کد SQL آن را هم به ما نشان میدهد که به درک و یا یادگیری ما کمک میکند.
ایجاد دیتابیس
مرحله 1:
مرحله 2:
نمایش ساختار SQL:
ایجاد جدول در دیتابیس
جداول هر دیتابیس در بخش Schemas آن دیتابیس وجود دارند.
مرحله 1:
مرحله 2:
مرحله 3:
مرحله 4:
نمایش ساختار SQL:
ایجاد User
مرحله 1:
مرحله 2:
مرحله 3:
مرحله 4:
مرحله 5:
نمایش ساختار SQL:
در این ساختار گرافیکی میتوان از کدهای SQL هم استفاده کرد.
اتصال دیتابیس به پروژه و انتقال داده های دیتابیس قبلی
قبل از هرچیزی لازمه یک کاربر(بهتره تمام دسترسی ها را به کاربر خود بدهیم) و یک دیتابیس(همین کاربر جدید را برایش مشخص میکنیم) از طریق psql و یا pgadmin ایجاد کنیم.
اگر فرمت تاریخ داده های دیتابیس قبلی به فارسی(شمسی) بود ابتدا باید فیلدهای تاریخ را به حالت عادی برگردانیم.(هر جا از تاریخ جلالی استفاده کرده ایم را باید به حالت عادی خود برگردانیم) | سپس make migrations و migrate را اجرا میکنیم./ (مگرنه نمیتوان داده های دیتابیس قبلی را به دیتابیس جدید منتقل کرد.)
پس از انتقال داده ها به روی دیتابیس جدید دوباره تاریخ ها را فارسی میکنیم.
در اینجا میخواهیم نحوه استخراج داده های دیتابیس قبلی و انتقال آنها روی دیتابیس جدید را توضیح دهیم چنانچه داده های قبلی را نیاز ندارید و فقط میخواهید دیتابیس جدید را به پروژه خود معرفی کنید میتوانید از این توضیحات صرف نظر کنید:
اینها توی ترمینال استفاده میشوند./ توی پروژه جنگوی خود، ترمیتال را باز کرده و دستورات را اجرا میکنیم.
با استفاده از dumpdata اطلاعات دیتابیس را استخراج میکنیم.
با استفاده از loaddata اطلاعات را روی دیتابیس قرار میدهیم.
با استفاده از python manage.py dumpdata --help میتوان دستورات dumpdata را مشاهده کرد.
Terminal
python -Xutf8 manage.py dumpdata --indent=4 --output=blog_data.json
دستور
-Xutf8
برای جلوگیری از خطا و ارورهای احتمالی است، utf8-mode پایتون را فعال میکنیم تا دیتا به درستی ذخیره بشوند.با دستور
--indent=4
برایش فاصله گذاری(دندانه گذاری) مشخص میکنیم تا ساختار فایل بهم ریختگی داشته باشدبا دستور
--output=<name>.json
مشخص میکنیم داده های استخراج شده در چه فایلی(با چه نامی) ذخیره شوند.
این فایل خروجی در پروژه جنگو ما ذخیره میشود.
اتصال دیتابیس جدید به پروژه خود
project directory/settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': <database-name>, 'USER': <user>, 'PASSWORD': <user password>, 'PORT': 5432, } }
برای NAME، اسم دیتابیسی که ایجاد کردیم را وارد میکنیم.
برای USER، اسم کاربری که ایجاد کردیم را وارد میکنیم./(کاربری که میتواند به دیتابیس لاگین کند)
برای PASSWORD، رمز user را وارد میکنیم.
برای PORT، پورت پیشفرض postgres را وارد میکنیم.
پس از ایجاد تغییرات در settings.py(معرفی دیتابیس جدید به پروژه)، ابتدا باید کتابخانه psycopg-binary را نصب کنیم و بعد از آن دستور migrate را اجرا میکنیم.
Terminal
python -m pip install psycopg2-binary
python manage.py migrate
انتقال داده های قبلی به روی دیتابیس جدید
Terminal
python manage.py loaddata <output_file.json>
به این ترتیب اطلاعات داده های قبلی از روی فایل JSON به دیتابیس جدید منتقل میشوند./ حالا اگه خواستیم دوباره تاریخ ها را فارسی میکنیم.
خلاصه مراحل صورت گرفته:
ابتدا user و database را ایجاد میکنیم ، فیلدهای تاریخ را اگر فارسی هستند به حالت عادی برمیگردانیم.
1- با استفاده از dumpdata اطلاعات دیتابیس را استخراج میکنیم.
2- دیتابیس جدید را به پروژه معرفی میکنیم(settings.py/DATABASES)
3- با استفاده از loaddata اطلاعات را روی دیتابیس جدید قرار میدهیم.
اگر بخواهیم تاریخ ها فارسی باشند دوباره از تاریخ جلالی برای فیلد های تاریخ استفاده میکنیم.