0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hướng Dẫn Toàn Diện về SQLAlchemy và Quá Trình Di Chuyển Cơ Sở Dữ Liệu (Phần 1)

Đăng vào 4 ngày trước

• 6 phút đọc

Giới Thiệu

Chào các bạn! Mình rất vui mừng khi có thể chia sẻ những kiến thức mà mình đã tích lũy được trong lĩnh vực lập trình, đặc biệt là về quản lý cơ sở dữ liệu trong các dự án AI. Trong bài viết này, mình sẽ giới thiệu về SQLAlchemy và cách thức di chuyển cơ sở dữ liệu (database migration) trong dự án của bạn. Hy vọng bài viết sẽ hữu ích cho sự phát triển dự án của bạn.

SQLAlchemy Là Gì?

SQLAlchemy là một thư viện phổ biến trong Python, được thiết kế để thao tác với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) như MySQL, PostgreSQL, SQLite, và hơn thế nữa. Thư viện này cung cấp một công cụ mạnh mẽ để quản lý cơ sở dữ liệu một cách hiệu quả và dễ dàng.

Hai Thành Phần Chính Của SQLAlchemy

SQLAlchemy bao gồm hai phần quan trọng: Object Relational Mapping (ORM)Core.

1. Object Relational Mapping (ORM)

ORM giúp bạn dễ dàng thao tác với các tập dữ liệu lớn. Điều này không những giúp bạn dễ dàng viết mã mà còn dễ dàng bảo trì sau này. Thay vì sử dụng các câu lệnh SQL phức tạp, bạn có thể tương tác với cơ sở dữ liệu thông qua các đối tượng Python.

Các Thành Phần Chính Của ORM:

  • Declarative Base: Để định nghĩa các lớp ánh xạ đến các bảng trong cơ sở dữ liệu.

    python Copy
    from sqlalchemy.ext.declarative import declarative_base
    Base = declarative_base()
  • Class Mapping: Định nghĩa các lớp tương ứng với các bảng trong cơ sở dữ liệu.

    python Copy
    from sqlalchemy import Column, Integer, String
    class User(Base):
        __tablename__ = 'users'
        id = Column(Integer, primary_key=True)
        name = Column(String)
        age = Column(Integer)
  • Session: Quản lý phiên làm việc với cơ sở dữ liệu và các thao tác CRUD (Create, Read, Update, Delete).

    python Copy
    from sqlalchemy.orm import sessionmaker
    Session = sessionmaker(bind=engine)
    session = Session()
  • Query: Thực hiện các truy vấn trên các đối tượng có sẵn trong ORM.

    python Copy
    users = session.query(User).all()
    for user in users:
        print(user.name, user.age)

2. SQLAlchemy Core

SQLAlchemy Core là lớp trừu tượng thấp hơn, cho phép bạn viết các câu lệnh SQL trực tiếp trong khi vẫn tận dụng các tính năng như quản lý kết nối và tối ưu hóa.

Các Thành Phần Chính Của SQLAlchemy Core:

  • Engine: Quản lý kết nối với cơ sở dữ liệu.

    python Copy
    from sqlalchemy import create_engine
    engine = create_engine('sqlite:///example.db')
  • MetaData: Lưu trữ thông tin về cấu trúc bảng và mối quan hệ giữa các bảng.

    python Copy
    from sqlalchemy import MetaData
    metadata = MetaData()
  • Table: Đại diện cho một bảng trong cơ sở dữ liệu.

    python Copy
    from sqlalchemy import Table, Column, Integer, String
    users = Table('users', metadata,
        Column('id', Integer, primary_key=True),
        Column('name', String),
        Column('age', Integer)
    )
  • Column: Đại diện cho một cột trong bảng.

    python Copy
    Column('name', String)

3. So Sánh SQLAlchemy Core và ORM

Tham số SQLAlchemy Core ORM
Phong cách làm việc Làm việc trực tiếp với SQL Thao tác với các Object trong Python
Linh hoạt Cao Thấp hơn
Độ phức tạp Phù hợp cho các tác vụ phức tạp Phù hợp cho CRUD thông thường

4. Kết Hợp SQLAlchemy Core và ORM

SQLAlchemy cho phép bạn kết hợp cả Core và ORM để tận dụng những lợi ích của cả hai phương pháp. Bạn có thể sử dụng ORM để quản lý các đối tượng và Core để thực hiện các truy vấn phức tạp.

python Copy
# Sử dụng ORM để quản lý đối tượng
new_user = User(name='Alice', age=30)
session.add(new_user)
session.commit()

# Sử dụng Core để thực hiện truy vấn tùy chỉnh
from sqlalchemy import select
stmt = select([users]).where(users.c.age > 20)
result = engine.execute(stmt)
for row in result:
    print(row)

Di Chuyển Cơ Sở Dữ Liệu

Di Chuyển Cơ Sở Dữ Liệu Là Gì?

Di chuyển cơ sở dữ liệu (Database Migration) là quá trình quản lý và áp dụng các thay đổi đối với cấu trúc cơ sở dữ liệu trong suốt vòng đời của một dự án. Các thay đổi này có thể bao gồm:

  • Thêm, sửa, xóa bảng
  • Thêm, sửa, xóa cột
  • Thay đổi kiểu dữ liệu của cột
  • Thêm, sửa, xóa các ràng buộc (constraints)

Mục tiêu của quá trình di chuyển là duy trì sự đồng bộ giữa mã nguồn và cấu trúc cơ sở dữ liệu, giúp quản lý các thay đổi một cách hệ thống và giảm thiểu lỗi.

Tại Sao Cần Di Chuyển Cơ Sở Dữ Liệu?

  • Phát Triển và Bảo Trì: Cùng với sự phát triển của ứng dụng, yêu cầu về dữ liệu cũng thay đổi. Di chuyển cơ sở dữ liệu giúp cập nhật mà không gây gián đoạn.
  • Quản Lý Phiên Bản: Giúp theo dõi các thay đổi và quay về phiên bản trước nếu cần thiết.
  • Tự Động Hóa: Tự động hóa quá trình di chuyển để áp dụng thay đổi một cách an toàn.

Alembic: Công Cụ Di Chuyển Dành Cho SQLAlchemy

Alembic là một công cụ mạnh mẽ dùng để quản lý di chuyển cho SQLAlchemy. Nó cho phép bạn:

  • Tạo và quản lý các phiên bản di chuyển
  • Tự động sinh ra di chuyển dựa trên sự thay đổi của mô hình ORM
  • Áp dụng hoặc quay lại các di chuyển dễ dàng

Tổng Kết

Trong phần 1 của bài viết này, mình đã cùng các bạn tìm hiểu cách sử dụng cơ sở dữ liệu trong dự án Python với SQLAlchemy cũng như quá trình di chuyển cơ sở dữ liệu. Phần tiếp theo sẽ hướng dẫn cụ thể hơn về cách khởi tạo database bằng PostgreSQL và cài đặt Alembic. Hãy cùng chờ đón phần 2 nhé! Cảm ơn các bạn đã dành thời gian đọc bài viết này. Chúc các bạn một ngày tốt lành!
source: viblo

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