- #django 的 manytomany 在 flask 中两个 ForeignKey 完成
- from duoduo.test import Users,Depart,Student,Course,Student2Course
- from sqlalchemy.orm import sessionmaker
- from sqlalchemy import create_engine
- engine = create_engine(
- "mysql+pymysql://root:123@127.0.0.1:3306/duoduo123?charset=utf8",
- max_overflow=0, # 超过连接池大小外最多创建的连接
- pool_size=5, # 连接池大小
- pool_timeout=30, # 池中没有线程最多等待的时间, 否则报错
- pool_recycle=-1 # 多久之后对线程池中的线程进行一次连接的回收 (重置)
- )
- SessionFactory = sessionmaker(bind=engine)
- # 根据 Users 类对 user 表进行增删改查
- session=SessionFactory()
- # #1, 查询所有用户
- # # ret =session.query(Users).all()
- # #
- # # for i in ret:
- # # print(i.id,i.name,i.depart_id)
- #2, 查询所有用户, 所属部门名称
- # ret=session.query(Users.id,Users.name,Depart.title).join(Depart,User.depart_id==Depart.id).all()
- # #这里有默认 ForeignKey ,User.depart_id==Depart.id 可以不加也行
- # for i in ret:
- # print(i.id ,i.name,i.title)
- #SELECT users.id AS users_id, users.name AS users_name, depart.title AS depart_title
- #FROM users INNER JOIN depart ON depart.id = users.depart_id
- # q=session.query(Users.id,Users.name,Depart.title).join(Depart)
- # print(q)
- #3,relation 字段: 查询所有用户 + 所有部门名称
- # ret=session.query(Users).all()
- # for row in ret:
- # print(row.id,row.name,row.depart_id,row.dp.title)
- #4,relation 字段: 查询销售部所有人员
- # obj=session.query(Depart).filter(Depart.title =='大娃').first()
- # # for i in obj.pers:
- # # print(i.id,i.name,obj.title)
- #5, 创建一个名称叫: IT 部门, 再在该部门中添加一个员工叫: 多多
- # 方式一:
- # d1=Depart(title='IT')
- # session.add(d1)
- # session.commit()
- #
- # u1=Users(name='duoduo',depart_id=d1.id)
- # session.add(u1)
- # session.commit()
- # 方式二:
- # u1=Users(name='多多 1',dp=Depart(title='IT'))
- # session.add(u1)
- # session.commit()
- #6, 创建一个部门叫王者荣耀, 这个部门添加多个员工: 亚瑟, 后裔, 貂蝉
- # d1=Depart(title='王者荣耀')
- # d1.pers=[Users(name='亚瑟'),Users(name='后裔'),Users(name='貂蝉')]
- #
- # session.add(d1)
- # session.commit()
- #1, 录入数据
- # session.add_all([
- # Student(name='大娃'),
- # Student(name='二娃'),
- # Course(title='物理'),
- # Course(title='化学'),
- #
- # ])
- # session.add_all([
- # Student2Course(student_id=2,course_id=1),
- # # Student2Course(student_id=1,course_id=2)
- # ]
- # )
- #2, 查每个人选了课程的名称, 三张表进行关联
- # ret=session.query(Student2Course.id,Student.name,Course.title).join(Student,Student2Course.student_id==Student.id,isouter=True).join(Course,Student2Course.course_id==Course.id,isouter=True).order_by(Student2Course.id.asc())
- # for i in ret:
- # print(i)
- #3,'大娃'所选的所有课
- # ret=session.query(Student2Course.id,Student.name,Course.title).join(Student,Student2Course.student_id==Student.id,isouter=True).join(Course,Student2Course.course_id==Course.id,isouter=True).filter(Student.name=='大娃').order_by(Student2Course.id.asc())
- #
- # for i in ret:
- # print(i)
- # obj=session.query(Student).filter(Student.name=='大娃').first()
- # for item in obj.course_list:
- # print(item.title)
- #4 选了'化学'课程的所有人的名字
- # obj=session.query(Course).filter(Course.title=='化学').first()
- # for item in obj.student_list:
- # print(item.name)
- # 创建一个课程, 创建 2 个学, 两个学生选新创建的课程
- # obj=Course(title='体育')
- # obj.student_list=[Student(name='五娃'),Student(name='六娃')]
- #
- # session.add(obj)
- # session.commit()
- # session.close()
来源: https://www.cnblogs.com/ManyQian/p/9532440.html