SQLAlchemy Core - Chọn hàng

Trong chương này, chúng ta sẽ thảo luận về khái niệm chọn hàng trong đối tượng bảng.

Phương thức select () của đối tượng bảng cho phép chúng tôi construct SELECT expression.

s = students.select()

Đối tượng được chọn dịch sang SELECT query by str(s) function như hình dưới đây -

'SELECT students.id, students.name, students.lastname FROM students'

Chúng ta có thể sử dụng đối tượng chọn này làm tham số để thực thi () phương thức của đối tượng kết nối như được hiển thị trong đoạn mã bên dưới:

result = conn.execute(s)

Khi câu lệnh trên được thực thi, trình bao Python sẽ lặp lại sau biểu thức SQL tương đương:

SELECT students.id, students.name, students.lastname
FROM students

Biến kết quả tương đương với con trỏ trong DBAPI. Bây giờ chúng tôi có thể tìm nạp các bản ghi bằng cách sử dụngfetchone() method.

row = result.fetchone()

Tất cả các hàng đã chọn trong bảng có thể được in bằng for loop như dưới đây -

for row in result:
   print (row)

Mã hoàn chỉnh để in tất cả các hàng từ bảng sinh viên được hiển thị bên dưới:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()

students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String), 
)

s = students.select()
conn = engine.connect()
result = conn.execute(s)

for row in result:
   print (row)

Đầu ra được hiển thị trong trình bao Python như sau:

(1, 'Ravi', 'Kapoor')
(2, 'Rajiv', 'Khanna')
(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

Mệnh đề WHERE của truy vấn SELECT có thể được áp dụng bằng cách sử dụng Select.where(). Ví dụ: nếu chúng ta muốn hiển thị các hàng có id> 2

s = students.select().where(students.c.id>2)
result = conn.execute(s)

for row in result:
   print (row)

Đây c attribute is an alias for column. Kết quả sau sẽ được hiển thị trên shell -

(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

Ở đây, chúng ta phải lưu ý rằng đối tượng select cũng có thể được lấy bằng hàm select () trong mô-đun sqlalchemy.sql. Hàm select () yêu cầu đối tượng bảng làm đối số.

from sqlalchemy.sql import select
s = select([users])
result = conn.execute(s)