zoukankan      html  css  js  c++  java
  • 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))
    复制代码
  • 相关阅读:
    git
    RT-Thread 4.0 + STM32F407 学习笔记1
    C#串口通信及数据表格存储
    NRF52832初步使用
    ubuntu终端下快捷键之--字体放大缩小
    微信公众号开发被动回复用户消息,回复内容Content使用了" "换行符还是没有换行
    python2018年秋季调研
    python图像处理模块Pillow--Image模块
    linux查看文件命令tail的使用
    使用xadmin更新数据时,报错expected string or bytes-like object
  • 原文地址:https://www.cnblogs.com/dusihan/p/10131682.html
Copyright © 2011-2022 走看看