Thursday, November 21, 2024

[Python] – Query all, filter, filter_by và first trong SQLAlchemy

-

SQLAlchemy là một thư viện ORM (Object Relational Mapping) phổ biến cho Python. Nó cho phép lập trình viên kết nối ứng dụng Python với cơ sở dữ liệu quan hệ một cách dễ dàng và hiệu quả.

Trong SQLAlchemy, một Query là một đối tượng đại diện cho một truy vấn SQL. Nó có thể được sử dụng để truy vấn dữ liệu từ cơ sở dữ liệu.

Trong bài viết này, chúng ta sẽ tìm hiểu về bốn phương thức quan trọng của đối tượng Query:

  • Query.all()
  • Query.filter()
  • Query.filter_by()
  • Query.first()

Lý thuyết

  • Query.all()

Phương thức Query.all() trả về một danh sách tất cả các bản ghi trong truy vấn.

Ví dụ:

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base

engine = create_engine("mysql+pymysql://root:123456@localhost/mydb")
Base = declarative_base()

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

Base.metadata.create_all(engine)

session = Session(engine)

users = session.query(User).all()

for user in users:
    print(user.name, user.age)

Kết quả đầu ra:

John 25
Mary 30
  • Query.filter()

Phương thức Query.filter() cho phép lọc các bản ghi trong truy vấn dựa trên một điều kiện.

Ví dụ:

users = session.query(User).filter(User.age > 20).all()

for user in users:
    print(user.name, user.age)

Kết quả đầu ra:

Mary 30
  • Query.filter_by()

Phương thức Query.filter_by() cho phép lọc các bản ghi trong truy vấn dựa trên một giá trị cụ thể cho một trường nhất định.

Ví dụ:

users = session.query(User).filter_by(age=30).all()

for user in users:
    print(user.name, user.age)

Kết quả đầu ra:

Mary 30
  • Query.first()

Phương thức Query.first() trả về bản ghi đầu tiên trong truy vấn.

Ví dụ:

user = session.query(User).first()

print(user.name, user.age)

Kết quả đầu ra:

Mary 30

Các ví dụ

Dưới đây là một số ví dụ khác về cách sử dụng các phương thức này:

  • Sử dụng Query.all() để truy vấn tất cả các bản ghi trong một bảng:
users = session.query(User).all()
  • Sử dụng Query.filter() để lọc các bản ghi dựa trên một điều kiện:

Python

users = session.query(User).filter(User.name == "John").all()
  • Sử dụng Query.filter_by() để lọc các bản ghi dựa trên một giá trị cụ thể cho một trường:

Python

users = session.query(User).filter_by(age=30).all()
  • Sử dụng Query.first() để trả về bản ghi đầu tiên trong truy vấn:

Python

user = session.query(User).first()

Các điểm lưu ý

  • Các phương thức này chỉ có thể được sử dụng với các truy vấn được tạo bằng cách sử dụng Query().
  • Các phương thức này có thể được kết hợp với nhau để tạo các truy vấn phức tạp hơn.

Kết luận

Các phương thức Query.all(), Query.filter(), Query.filter_by()Query.first() là những phương thức quan trọng của đối tượng Query trong SQLAlchemy. Chúng cho phép lập trình viên truy vấn dữ liệu từ cơ sở dữ liệu một cách dễ dàng và hiệu quả

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories