0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Tạo ứng dụng TO-DO với Python và PostgreSQL

Đăng vào 5 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTech

Tạo ứng dụng TO-DO với Python và PostgreSQL

Giới thiệu

Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một ứng dụng TO-DO đơn giản bằng Python và PostgreSQL. Ứng dụng này sẽ cho phép người dùng quản lý danh sách công việc của họ một cách hiệu quả. Chúng ta sẽ đi qua từng bước từ việc tạo kho lưu trữ trên GitHub cho đến việc triển khai ứng dụng.

Mục lục

Yêu cầu

Trước khi bắt đầu, bạn cần đảm bảo rằng bạn đã cài đặt:

  • Python 3.x
  • PostgreSQL
  • pip (trình quản lý gói Python)

Tạo kho lưu trữ trên GitHub

  1. Đăng nhập vào tài khoản GitHub của bạn.
  2. Nhấp vào nút New để tạo kho lưu trữ mới.
  3. Đặt tên cho kho lưu trữ (ví dụ: todo-app) và mô tả ngắn gọn.
  4. Nhấp vào Create repository để hoàn tất.
  5. Sao chép URL của kho lưu trữ để sử dụng sau này.

Cài đặt môi trường

Sử dụng terminal hoặc command prompt, làm theo các bước sau:

  1. Tạo thư mục cho dự án:
    bash Copy
    mkdir todo-app
    cd todo-app
  2. Clone kho lưu trữ:
    bash Copy
    git clone <URL>
    cd todo-app
  3. Tạo tệp yêu cầu:
    Tạo tệp requirements.txt và thêm các thư viện cần thiết:
    plaintext Copy
    psycopg2
    python-dotenv
  4. Cài đặt các thư viện:
    bash Copy
    pip install -r requirements.txt

Cấu trúc dự án

Dưới đây là cấu trúc thư mục cho ứng dụng TO-DO:

Copy
 todo-app/
 ├── .gitignore
 ├── README.md
 ├── requirements.txt
 ├── main.py
 └── .env

Tệp .gitignore

Thêm các tệp mà bạn không muốn theo dõi vào tệp .gitignore:

Copy
__pycache__/
.env
*.pyc

Tệp README.md

Tạo một tệp README.md với thông tin dự án:

markdown Copy
# Ứng dụng TO-DO
Ứng dụng quản lý danh sách công việc.

Kết nối với cơ sở dữ liệu PostgreSQL

Chúng ta sẽ sử dụng thư viện psycopg2 để kết nối với PostgreSQL. Đầu tiên, tạo một tệp .env để lưu trữ biến môi trường:

plaintext Copy
DATABASE_URL=postgresql://user:password@host/dbname

Kết nối đến cơ sở dữ liệu

Trong tệp main.py, thêm mã sau để kết nối với cơ sở dữ liệu:

python Copy
import os
import psycopg2
from dotenv import load_dotenv

load_dotenv()  # Tải các biến môi trường từ .env

try:
    connection = psycopg2.connect(os.getenv('DATABASE_URL'))
    cursor = connection.cursor()
    print("Kết nối thành công!")
except Exception as e:
    print(f"Lỗi kết nối: {e}")
finally:
    if connection:
        cursor.close()
        connection.close()
        print("Kết nối đã được đóng.")

Thêm chức năng cho ứng dụng

Bây giờ chúng ta sẽ thêm chức năng để thêm, xóa và liệt kê các công việc.

Thêm công việc

python Copy
# Hàm thêm công việc
def add_task(cursor, task):
    cursor.execute("INSERT INTO tasks (task_name) VALUES (%s)", (task,))
    print(f"Đã thêm công việc: {task}")

Liệt kê công việc

python Copy
# Hàm liệt kê công việc
def list_tasks(cursor):
    cursor.execute("SELECT * FROM tasks")
    tasks = cursor.fetchall()
    for task in tasks:
        print(task)

Xóa công việc

python Copy
# Hàm xóa công việc
def delete_task(cursor, task_id):
    cursor.execute("DELETE FROM tasks WHERE id = %s", (task_id,))
    print(f"Đã xóa công việc với ID: {task_id}")

Thực hành tốt nhất

  • Sử dụng biến môi trường: Đảm bảo không lưu trữ thông tin nhạy cảm trong mã nguồn.
  • Kiểm tra lỗi: Luôn kiểm tra và xử lý lỗi khi làm việc với cơ sở dữ liệu.
  • Sử dụng ORM: Xem xét việc sử dụng ORM như SQLAlchemy để quản lý cơ sở dữ liệu dễ dàng hơn.

Câu hỏi thường gặp

Tôi có thể sử dụng cơ sở dữ liệu khác không?

Có, bạn có thể thay thế PostgreSQL bằng MySQL hoặc SQLite, nhưng bạn sẽ cần chỉnh sửa mã kết nối cho phù hợp.

Làm thế nào để triển khai ứng dụng này?

Bạn có thể triển khai ứng dụng trên Heroku hoặc DigitalOcean. Tham khảo tài liệu của họ để biết thêm chi tiết.

Kết luận

Chúng ta đã hoàn thành việc xây dựng một ứng dụng TO-DO cơ bản bằng Python và PostgreSQL. Hãy thử nghiệm và mở rộng chức năng của ứng dụng để học hỏi thêm nhiều điều thú vị hơn. Nếu bạn có câu hỏi, hãy để lại ý kiến của bạn ở phần bình luận bên dưới!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào