通过查询多个父亲,对应一个儿子
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:123@127.0.0.1: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))