SQLAlchemy ORM - การใช้แบบสอบถาม

คำสั่ง SELECT ทั้งหมดที่สร้างโดย SQLAlchemy ORM ถูกสร้างโดย Query object มันมีอินเทอร์เฟซแบบกำเนิดดังนั้นการเรียกที่ต่อเนื่องจะส่งคืนอ็อบเจ็กต์ Query ใหม่สำเนาของเดิมพร้อมเกณฑ์และตัวเลือกเพิ่มเติมที่เกี่ยวข้อง

เริ่มต้นวัตถุแบบสอบถามโดยใช้วิธีการสืบค้น () ของเซสชันดังนี้ -

q = session.query(mapped class)

คำสั่งต่อไปนี้เทียบเท่ากับข้อความข้างต้น -

q = Query(mappedClass, session)

ออบเจ็กต์คิวรีมีเมธอด all () ซึ่งส่งคืนชุดผลลัพธ์ในรูปแบบของรายการวัตถุ หากเราดำเนินการบนโต๊ะลูกค้าของเรา -

result = session.query(Customers).all()

คำสั่งนี้มีประสิทธิภาพเทียบเท่ากับนิพจน์ SQL ต่อไปนี้ -

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers

อ็อบเจ็กต์ผลลัพธ์สามารถข้ามผ่านได้โดยใช้ For loop ด้านล่างเพื่อรับเร็กคอร์ดทั้งหมดในตารางลูกค้าอ้างอิง นี่คือรหัสที่สมบูรณ์เพื่อแสดงบันทึกทั้งหมดในตารางลูกค้า -

from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sales.db', echo = True)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Customers(Base):
   __tablename__ = 'customers'
   id = Column(Integer, primary_key =  True)
   name = Column(String)

   address = Column(String)
   email = Column(String)

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()
result = session.query(Customers).all()

for row in result:
   print ("Name: ",row.name, "Address:",row.address, "Email:",row.email)

Python console แสดงรายการบันทึกดังต่อไปนี้ -

Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
Name: Komal Pande Address: Koti, Hyderabad Email: [email protected]
Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]

วัตถุ Query ยังมีวิธีการที่มีประโยชน์ดังต่อไปนี้ -

ซีเนียร์ วิธีการและคำอธิบาย
1

add_columns()

จะเพิ่มนิพจน์คอลัมน์อย่างน้อยหนึ่งรายการในรายการคอลัมน์ผลลัพธ์ที่จะส่งคืน

2

add_entity()

เพิ่มเอนทิตีที่แมปลงในรายการคอลัมน์ผลลัพธ์ที่จะส่งคืน

3

count()

ส่งคืนจำนวนแถวที่ Query นี้จะส่งคืน

4

delete()

ดำเนินการค้นหาลบจำนวนมาก ลบแถวที่ตรงกับแบบสอบถามนี้จากฐานข้อมูล

5

distinct()

ใช้ส่วนคำสั่ง DISTINCT กับแบบสอบถามและส่งคืนแบบสอบถามที่เป็นผลลัพธ์ใหม่

6

filter()

ใช้เกณฑ์การกรองที่กำหนดกับสำเนาของแบบสอบถามนี้โดยใช้นิพจน์ SQL

7

first()

จะส่งคืนผลลัพธ์แรกของแบบสอบถามนี้หรือไม่มีหากผลลัพธ์ไม่มีแถวใด ๆ

8

get()

ส่งคืนอินสแตนซ์ตามตัวระบุคีย์หลักที่กำหนดซึ่งให้การเข้าถึงโดยตรงไปยังแผนที่ข้อมูลประจำตัวของเซสชันที่เป็นเจ้าของ

9

group_by()

ใช้เกณฑ์ GROUP BY อย่างน้อยหนึ่งรายการกับแบบสอบถามและส่งคืนแบบสอบถามที่เป็นผลลัพธ์ใหม่

10

join()

สร้างการเข้าร่วม SQL กับเกณฑ์ของวัตถุแบบสอบถามนี้และใช้โดยกำเนิดโดยส่งคืนแบบสอบถามที่เป็นผลลัพธ์ใหม่

11

one()

จะส่งกลับผลลัพธ์เดียวหรือเพิ่มข้อยกเว้น

12

order_by()

ใช้เกณฑ์ ORDER BY อย่างน้อยหนึ่งรายการกับแบบสอบถามและส่งคืนแบบสอบถามที่เป็นผลลัพธ์ใหม่

13

update()

ดำเนินการแบบสอบถามการอัปเดตจำนวนมากและอัปเดตแถวที่ตรงกับแบบสอบถามนี้ในฐานข้อมูล