常見的查詢操作

yongheng999發表於2024-07-09

1)根據主鍵查詢
emp = session.get(Emp, 1)
2) 查詢整張表的資料

a、返回模型物件

statement = select(Employee)
list_emp = session.scalars(statement).all()
for o in list_emp:
print(o)
# 需要在Employee模型類中增加一個__str__函式
def __str__(self):
return f'{self.name}, {self.gender.value}, {self.sal}, {self.entry_date}'

b、返回row物件,一般用於指定返回的欄位

statement = select(Employee.name, Employee.sal, Employee.gender)
# list_emp中的元素不是模型物件, 而是包含多個欄位只的row物件
list_emp = session.execute(statement).all()
for row in list_emp:
print(row.name, row.sal, row.gender.value)

c、執行原生的SQL,並返回row物件

執行原生sql
sql_text = text('select id, name, sal, gender from t_emp')
# list_emp中的元素不是模型物件, 而是包含多個欄位只的row物件
list_emp = session.execute(sql_text).all()
for row in list_emp:
print(row)
print(row.name, row.sal, row.gender)

d、執行原生的sql,並返回模型物件

執行原生sql
sql_text = text('select id, name, sal, gender from t_emp')
# 手動建立對映關係
new_sql = sql_text.columns(Employee.id, Employee.name, Employee.sal,
Employee.gender)
# 得到orm的查詢語句
orm_sql = select(Employee).from_statement(new_sql)
# list_emp中的元素是模型物件
list_emp = session.execute(orm_sql).scalars()
for o in list_emp:
print(type(o))
print(o)

相關文章