PostgreSQL là một trong số lựa chọn tốt nhất cho môi trường lưu trữ an toàn. Dưới đây là cách tích hợp PostgreSQL vào Django.
Thêm database vào ứng dụng đảm bảo tính toàn vẹn và bảo mật dữ liệu. PostgreSQL (Postgres) là một hệ thống quản lý database ngôn ngữ truy vấn có cấu trúc (SQL) mà bạn có thể thử.
PostgreSQL hỗ trợ hầu hết hệ điều hành phổ biến và tương thích với các ngôn ngữ lập trình hiện đại. PostgreSQL cũng xử lý các kiểu tài liệu và dữ liệu khác nhau. Trong xu thế lập trình đòi hỏi sử dụng SQL ngày càng nhiều, việc học cấu hình và sử dụng PostgreSQL đem lại lợi thế cho lập trình viên.
Bài viết dưới đây sẽ hướng dẫn bạn cách cài đặt, cấu hình và dùng Postgres trong ứng dụng Django. Bạn cũng sẽ kiểm thử tính năng của database bằng cách thêm, lưu trữ và truy xuất dữ liệu.
1. Cài đặt PostgreSQL trên hệ thống
Hướng dẫn sau giải thích cách cài đặt Postgres trên hệ điều hành Ubuntu. Trước khi cài đặt Postgres, update các package phiên bản và phần phụ thuộc của chúng với lệnh sau:
$ sudo apt-get update
Tiếp theo, cài đặt PostgreSQL với lệnh sau:
$ sudo apt-get install postgresql postgresql-contrib libpq-dev
Khi được nhắc xác nhận cài đặt, nhấn Y cho Yes.
Kết nối server bằng lệnh sau:
$ sudo -i -u postgres
Sau đó, dùng client database để quyết định phiên bản Postgres đã cài.
Chạy lệnh psql --version.
postgres@nameofaccount:~$ psql --version
Kết quả sẽ hiện phiên bản Postgres như bên dưới:
psql (PostgreSQL) 14.5 (Ubuntu 14.5-0ubuntu0.22.04.1)
Thoát tài khoản Postgres bằng cách chạy lệnh exit.
postgres@nameofaccount:~$ exit
2. Tạo database
Bạn cần tạo database kết nối app Django. Điều hướng quay lại shell Postgres và chạy liên tiếp các lệnh sau.
sudo -i -u postgres
$ psql
Sau đó, dùng client để tạo database trên server.
postgres=# create database new_db;
Server này trả về thuật ngữ CREATE DATABASE khi nó tạo một database. Bạn cũng có thể kiểm tra bằng cách liệt kê tất cả database trong hệ thống bằng lệnh \l.
postgres=# \l
Cấu trúc của PostgreSQL
Giống như một database SQL điển hình, PostgreSQL chứa dữ liệu trong bảng. Bảng này đại diện cho các mục/mô hình khác nhau trong một ứng dụng. Bảng này có số cột và hàng cố định.
Mỗi bảng có một cột đặc biệt được gọi là khóa chính, một định danh riêng cho từng hàng nằm trong bảng. Một bảng cũng có thể có khóa ngoại kết nối nó với khóa chính của bảng khác.
Khóa ngoại xác định mối quan hệ giữa hai bảng.
Tiếp theo, bạn cần tạo app Django và liên kết database. Thế nhưng, đầu tiên, hãy cài psycopg2 để kết nối ứng dụng và database.
3. Cài đặt Django và thư viện Psycopg2
Để kết nối Postgres với app Django, bạn cần cài thư viện psycopg2. Đây là phần phụ thuộc Postgres giúp kết nối và giao tiếp với Django.
Chạy lệnh sau để cài psycopg2 và Django:
$ pipenv install psycopg2 Django
4. Tạo app Django
Bạn cần tạo app Django sẽ dùng database Postgres. Đầu tiên, tạo một dự án tên myboma hỗ trợ ứng dụng này. Các dự án Django tự động thêm phần phụ thuộc và cài đặt ứng dụng cần thiết để chạy app.
Tạo thư mục tên Boma-watch và điều hướng tới nó bằng lệnh sau:
$ mkdir Boma-watch
$ cd Boma-watch
Sau đó, tạo dự án Django bằng lệnh sau:
$ django-admin startproject myboma .
Tiếp theo, tạo app mới tên boma bằng lệnh sau:
$ django startapp boma
Sau khi chạy ứng dụng trên trình duyệt để xác nhận nó đang hoạt động, bạn sẽ kết nối nó với database ở phần tiếp theo.
5. Kết nối database với app Django
Giờ bạn sẽ kết nối app Django với database đã tạo bằng các bước sau:
Bước 1: Thay đổi cài đặt dự án để dùng Postgres
Bạn phải thay đổi cài đặt dự án để kết nối app Django với Postgres. Điều hướng tới dự án file settings.py. Sau đó, thay đổi cài đặt DATABASES để thêm cấu hình Postgres của bạn.
Thay thế USER và PASSWORD bằng tên người dùng và mật khẩu psql.
#......
DATABASES = {
'default': {
'ENGINE':'django.db.backends.postgresql',
'NAME':'new_db',
'USER':'morine',
'PASSWORD':'password',
}
}
Bước 2: Update múi giờ
Tiếp theo, trong file settings.py, đặt Timezone để thể hiện vị trí của bạn. Các dự án Django được cấu hình trước với múi giờ UTC.
TIME_ZONE = Africa/Nairobi
Bước 3: Tạo mẫu
Tạo một mẫu Profile trong ứng dụng. Bạn sẽ dùng class model để tạo bảng lưu tên và dữ liệu sinh học của ứng dụng. trong database
class Profile(models.Model):
name = models.CharField(max_length=30)
bio = models.TextField(max_length=100)
def __str__(self):
return self.name
Bước 4: Bắt đầu di chuyển
Chạy lệnh sau để bắt đầu di chuyển:
(virtual)$ python manage.py makemigrations boma
(virtual)$ python manage.py migrate
Di chuyển thành công trông sẽ như sau:
Lệnh python manage.py migrate chọn ứng dụng từ cài đặt INSTALLED_APPS > file models.py và tạo bảng cho mỗi model. Bạn đã thành công kết nối Postgres với ứng dụng.
Giờ, bạn có thể kiểm thử chạy lệnh CREATE, READ, UPDATE, và DELETE (CRUD) trên ứng dụng.
6. Kiểm tra lệnh CRUD trên ứng dụng
Python API của Django sẽ cho phép bạn triển khai một số hoạt động database CRUD. API kết nối các hàm với mẫu để cho phép bạn thao tác với database.
Mở shell Python trong dự án Django bằng lệnh sau:
(virtual)$ python manage.py shell
Lệnh này sẽ mở một console tại nơi bạn có thể kiểm tra các hoạt động CRUD.
Hoạt động tạo
Đầu tiên, nhập model Profile từ mô đun models bằng lệnh sau:
from boma.models import Profile
Sau đó, tạo một phiên bản của class Profile và chuyển dữ liệu của bạn vào.
prof1 = Profile.objects.create(name ='Ken',bio ='I am a Scorpio')
Tiếp theo, lưu dữ liệu trong database.
prof1.save()
Hoạt động đọc
Sau khi tạo dữ liệu trong database và lưu nó, bạn có thể truy vấn nó để lấy dữ liệu đã lưu.
Dùng Profile.objects.all() để truy xuất toàn bộ dữ liệu trong bảng Profile ở database.
Profile.objects.all() #outputs <QuerySet [Profile: Ken]>
Bạn cũng có thể truy xuất một đối tượng bằng primary key hoặc pk. Chúng là những con số được gắn với từng mục đã lưu trong database.
Profile.objects.get(pk = 1) #outputs <Profile: Ken>
Hoạt động update
Bạn có thể update dữ liệu đã lưu bằng lệnh sau:
Profile.objects.filter(id = 1).update(name ='Kim';) #outputs 1
Để kiểm tra xem liệu tên của nó đã được update hay chưa, triển khai lệnh sau:
Profile.objects.filter(id = 1) #outputs <QuerySet [Profile: Kim]>
Hoạt động xóa
Bạn có thể xóa mục đã lưu bằng lệnh sau:
Profile.objects.filter(id = 1).delete() #outputs (1, {app.Profile: 1})
Để xác nhận xóa, chạy lệnh sau:
Profile.objects.filter(id = 1) #outputs <QuerySet []>
Bạn có thể thấy bộ truy vấn trống, cho biết dữ liệu không còn trong database.
Trên đây là cách cấu hình PostgreSQL trong Django. Hi vọng bài viết hữu ích với các bạn.