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)