常见的查询操作

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)

 

posted @ 2024-07-09 17:06  yongheng999  阅读(58)  评论(0)    收藏  举报