• python 之sqlalchemy many to one


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

    复制代码
     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))
    复制代码
  • 相关阅读:
    3星|《中国古城墙》:重要的古城墙的资料汇集
    bindingSource具体使用案例
    WPF第三方控件盘点
    FluentValidation具体使用案例
    Visual Studio 版本管理从TFS迁移到SVN
    Image.FromStream与Image.FromFile使用区别
    判断图片的格式的方法
    WCF测试小程序
    使用AutoMapper 处理DTO数据对象的转换
    获取mac地址和IP地址方式
  • 原文地址:https://www.cnblogs.com/dusihan/p/10131682.html
Copyright © 2020-2023  润新知