# qset7 = session.query(Departments).order_by(Departments.dep_id) # print(qset7.all()) # print(qset7.first()) # dep = qset7.first() # print(dep.dep_id, dep.dep_name) ################################# # 多表查询,查询员工所在部门 # qset8 = session.query(Employees.emp_name, Departments.dep_name)\ # .join(Departments) # for item in qset8: # print(item) # 多表查询时,query的第一个参数是Employees.emp_name,join时要写Departments # 如果query的第一个参数是Departments.dep_name, join时要写Employees # qset9 = session.query(Departments.dep_name, Employees.emp_name)\ # .join(Employees) # for item in qset9: # print(item) ################################# # 更新,首先找到记录对应的实例,然后对实例重新赋值即可 # 注意,filter的结果是列表的形式 # qset10 = session.query(Departments).filter(Departments.dep_name=='人事部') # hr = qset10[0] # 从列表中取出第一个元素 # hr.dep_name = '人力资源部' # session.commit() # 增删改都要commit ################################# # 删除,将7号部门删除 qset11 = session.query(Departments).filter(Departments.dep_id == 7) sales = qset11[0] session.delete(sales) session.commit()
from dbconn import Departments, Employees, Salary, Session # 创建会话实例,用于连接数据库 session = Session() # 创建部门实例 hr = Departments(dep_id=1, dep_name='人事部') ops = Departments(dep_id=2, dep_name='运维部') dev = Departments(dep_id=3, dep_name='开发部') qa = Departments(dep_id=4, dep_name='测试部') finance = Departments(dep_id=5, dep_name='财务部') market = Departments(dep_id=6, dep_name='市场部') sales = Departments(dep_id=7, dep_name='销售部') # 在数据库中创建记录 deps = [hr, ops, dev, qa, finance, market, sales] session.add_all(deps) session.commit() # 确认至数据库 # 关闭会话 session.close()
# dep = qset7.first() # print(dep) ############################################### # one要求查询结果只有一个值,0或多个值都报错 # qset8 = session.query(Departements).filter(Departements.dep_id==3) # dep = qset8.one() # print(dep) ############################################### # 修改,只要对对象重新赋值即可 # qset9 = session.query(Departements).filter(Departements.dep_name=='人事部') # hr = qset9.one() # hr.dep_name = '人力资源部' ############################################### # 删除,也是找到实例,删除即可 # qset10 = session.query(Departements).filter(Departements.dep_id==7) # market = qset10.one() # session.delete(market) ############################################### # 多表查询,查询时sqlalchemy会根据外键约束进行连接 # qset11 = session.query(Employees.emp_name, Departements.dep_name)\ # .join(Departements) # print(qset11.all()) # query时,先写Departments.dep_name就要join Employees qset12 = session.query(Departements.dep_name, Employees.emp_name)\ .join(Employees) print(qset12.all()) ############################################### session.commit() # 增删改需要commit session.close()
dep = qset7.first() print(dep.dep_id, dep.dep_name) ################################# # 多表查询,查询员工所在部门 qset8 = session.query(Employees.emp_name, Departments.dep_name).join(Departments) for item in qset8: print(item) # 多表查询时,query的第一个参数是Employees.emp_name,join时要写Departments # 如果query的第一个参数是Departments.dep_name, join时要写Employees qset9 = session.query(Departments.dep_name, Employees.emp_name).join(Employees) for item in qset8: print(item) ################################# # 更新,首先找到记录对应的实例,然后对实例重新赋值即可 # 注意,filter的结果是列表的形式 qset10 = session.query(Departments).filter(Departments.dep_name == '人事部') print(qset10) print(list(qset10)) hr = qset10[0] # 从列表中取出第一个元素 hr.dep_name = '人力资源部' session.commit() # 增删改都要commit确认 ################################# # 删除,将7号部门删除 qset11 = session.query(Departments).filter(Departments.dep_id == 7) sales = qset11[0] session.delete(sales) session.commit()
# print(qset8) # qset8是SQL语句 # print(qset8.all()) # all方法返回列表 # print(qset8.first()) # first返回all中的第一项 ####################################### # qset9 = session.query(Departments.dep_id, Departments.dep_name)\ # .filter(Departments.dep_id==20) # # one方法要求查询的结果只有一项,0或多项都报错 # print(qset9.one()) ####################################### # 多表查询,默认情况下sqlalchemy会自动根据主外键约束找到对应关系 # 查询的时候参数先写Employees,join要写Departments,反之亦然 # qset10 = session.query(Employees.emp_name, Departments.dep_name)\ # .join(Departments) # print(qset10.all()) ####################################### # 修改,只要将实例重新赋值 # qset11 = session.query(Departments).filter(Departments.dep_name=='人事部') # hr = qset11.one() # hr.dep_name = '人力资源部' ####################################### # 删除,先找到实例再删除 qset12 = session.query(Departments).filter(Departments.dep_id==6) sales = qset12.one() session.delete(sales) ####################################### session.commit() # 确认 session.close() # 关闭会诂连接