• 周日. 9月 25th, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

python 之sqlalchemy many to one

admin

11月 28, 2021

通过查询多个父亲,对应一个儿子

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 """
 4 @author: zengchunyun
 5 """
 6 from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
 7 from sqlalchemy.orm import sessionmaker, relationship, backref
 8 from sqlalchemy.ext.declarative import declarative_base
 9 from sqlalchemy import create_engine
10 
11 Base = declarative_base()
12 engine = create_engine('mysql+pymysql://root:[email protected]:3306/day11',echo=True)
13 
14 
15 
16 class Parent(Base):
17     __tablename__ = 'parent'
18     id = Column(Integer, primary_key=True)
19     name = Column(String(64))
20     child_id = Column(Integer, ForeignKey("child.id"))
21     childr = relationship("Child")
22 
23 
24 class Child(Base):
25     __tablename__ = 'child'
26     id = Column(Integer, primary_key=True)
27     name = Column(String(64))
28 
29 
30 
31 Base.metadata.create_all(engine)
32 
33 DBSession = sessionmaker()
34 DBSession.configure(bind=engine)
35 session = DBSession()  # 打开数据连接
36 
37 
38 
39 
40 ret = session.query(Parent).filter(Parent.name == 'zeng').one()
41 print(ret)
42 print(ret.childr.name)
43 ret = session.query(Parent).filter(Parent.name == 'chunyun').one()
44 print(ret)
45 print(ret.childr.name)
46 
47 ret = session.query(Parent).filter(Parent.name == 'chun').one()
48 print(ret)
49 print(ret.childr.name)

many to one 第二式

 1 class Parent(Base):
 2     __tablename__ = 'parent'
 3     id = Column(Integer, primary_key=True)
 4     name = Column(String(64))
 5     child_id = Column(Integer, ForeignKey("child.id"))
 6     childr = relationship("Child", back_populates="parents")
 7 
 8 
 9 class Child(Base):
10     __tablename__ = 'child'
11     id = Column(Integer, primary_key=True)
12     name = Column(String(64))
13     parents = relationship("Parent", back_populates="childr")找到父亲
14 
15 #通过双向建立映射关系,能让父亲查到儿子,也能让儿子

many to one 终极版

 1 class Parent(Base):
 2     __tablename__ = 'parent'
 3     id = Column(Integer, primary_key=True)
 4     name = Column(String(64))
 5     child_id = Column(Integer, ForeignKey("child.id"))
 6     childr = relationship("Child", backref="parents")  # 这段代码,变相的等于在Child类中添加了parents = relationship("Parent", back_populates="childr")
 7 
 8 
 9 class Child(Base):
10     __tablename__ = 'child'
11     id = Column(Integer, primary_key=True)
12     name = Column(String(64))

发表回复

您的电子邮箱地址不会被公开。