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()
và 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ả