×

Sử dụng ORM với SQLAlchemy để quản lý dữ liệu trong Python

Trong việc xây dựng ứng dụng Python, việc quản lý dữ liệu là một trong những yếu tố quan trọng để đảm bảo tính hiệu quả và dễ bảo trì. ORM (Object Relational Mapping) là một kỹ thuật phổ biến giúp chuyển đổi giữa các đối tượng trong trang mã và cơ sở dữ liệu quan hệ. SQLAlchemy là một trong những thư viện ORM mạnh mẽ và phổ biến nhất hiện nay. Bài viết này sẽ hướng dẫn bạn cách sử dụng SQLAlchemy để quản lý dữ liệu trong Python một cách hiệu quả.

Cài đặt SQLAlchemy

Trước tiên, bạn cần cài đặt SQLAlchemy. Bạn có thể sử dụng pip để cài đặt thư viện này một cách dễ dàng:

pip install SQLAlchemy

Nếu bạn định sử dụng SQLite làm cơ sở dữ liệu, bạn không cần cài thêm gì nữa. Tuy nhiên, nếu sử dụng các cơ sở dữ liệu khác như PostgreSQL hoặc MySQL, bạn cần cài đặt thêm các driver tương ứng, ví dụ như psycopg2 cho PostgreSQL.

Tạo kết nối cơ sở dữ liệu

Để bắt đầu, bạn cần tạo kết nối đến cơ sở dữ liệu. Đoạn mã sau đây minh họa cách kết nối đến một cơ sở dữ liệu SQLite:

from sqlalchemy import create_engine

# Tạo engine kết nối đến SQLite
engine = create_engine('sqlite:///mydatabase.db')

Với các cơ sở dữ liệu khác, bạn chỉ cần thay đổi URI kết nối cho phù hợp. Ví dụ, để kết nối với PostgreSQL:

engine = create_engine('postgresql+psycopg2://username:password@hostname/dbname')

Tạo các lớp ORM

Tiếp theo, chúng ta cần định nghĩa các lớp ORM, tức là các lớp sẽ đại diện cho các bảng trong cơ sở dữ liệu. Điều này được thực hiện bằng cách sử dụng SQLAlchemy's declarative_base API:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

Trong đoạn mã trên, chúng ta đã tạo một lớp User đại diện cho bảng users trong cơ sở dữ liệu, với các cột id, name, và age.

Tạo bảng trong cơ sở dữ liệu

Sau khi định nghĩa các lớp ORM, chúng ta cần tạo các bảng tương ứng trong cơ sở dữ liệu. Điều này có thể thực hiện dễ dàng như sau:

Base.metadata.create_all(engine)

Thao tác với dữ liệu

Với SQLAlchemy, bạn có thể thực hiện các thao tác cơ bản với dữ liệu như thêm, sửa, xóa và truy vấn một cách dễ dàng.

Thêm dữ liệu

Để thêm dữ liệu vào bảng, ta cần tạo một phiên làm việc (session):

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

# Thêm một người dùng
new_user = User(name='John Doe', age=30)
session.add(new_user)
session.commit()

Truy vấn dữ liệu

Bạn có thể truy vấn dữ liệu từ bảng bằng các phương thức của SQLAlchemy:

# Lấy tất cả người dùng
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

# Tìm người dùng cụ thể
user = session.query(User).filter_by(name='John Doe').first()
print(user.name, user.age)

Cập nhật dữ liệu

Để cập nhật dữ liệu, bạn chỉ cần lấy đối tượng từ phiên làm việc, thay đổi giá trị của nó và sau đó gọi commit:

user = session.query(User).filter_by(name='John Doe').first()
user.age = 31
session.commit()

Xóa dữ liệu

Để xóa dữ liệu, bạn có thể sử dụng phương thức delete:

user = session.query(User).filter_by(name='John Doe').first()
session.delete(user)
session.commit()

Kết luận

SQLAlchemy cung cấp một giao diện mạnh mẽ và linh hoạt để làm việc với cơ sở dữ liệu trong các ứng dụng Python. Sử dụng SQLAlchemy, bạn có thể dễ dàng quản lý dữ liệu mà không cần phải viết nhiều câu lệnh SQL phức tạp. Hy vọng bài viết này đã cung cấp cho bạn cái nhìn tổng quan và các bước cơ bản để bắt đầu sử dụng SQLAlchemy trong dự án của mình.

Comments