zoukankan      html  css  js  c++  java
  • SQLAlchemy 多对多

    创建多对多表

    from sqlalchemy.ext.declarative import declarative_base
    Base=declarative_base()
    
    from sqlalchemy import Column,String,Integer,ForeignKey
    from sqlalchemy.orm import relationship
    
    class Girl(Base):
        __tablename__="girl"
        id = Column(Integer,primary_key=True)
        name=Column(String(32))
    #secondary="Hotel" 表示两个表关联Hotel
        girl2boy = relationship("Boy",secondary="hotel",backref="boy2girl" )
    
    
    class Boy(Base):
        __tablename__ = "boy"
        id = Column(Integer,primary_key=True)
        name = Column(String(32))
    
    
    class Hotel(Base):
        __tablename__ = "hotel"
        id=Column(Integer,primary_key=True)
        girl_id =Column(Integer,ForeignKey("girl.id"))
        boy_id=Column(Integer,ForeignKey("boy.id"))
    
    from sqlalchemy import create_engine
    engine=create_engine("mysql+pymysql://root:@127.0.0.1:3306/day127?charset=utf8")
    
    Base.metadata.create_all(engine)

    添加多对多数据

    from sqlalchemy.orm import sessionmaker
    from SQL.M_M import engine,Boy
    
    Session=sessionmaker(engine)
    db_session=Session()
    #反向添加
    # boy_obj=Boy(name="kobe")
    # boy_obj.boy2girl =[Girl(name="dva"),Girl(name="xiaoemi")]
    # db_session.add(boy_obj)
    # db_session.commit()
    # db_session.close()
    #正向添加
    # girl_obj=Girl(name="anna",girl2boy=[Boy(name="curry"),Boy(name="green")])
    # db_session.add(girl_obj)
    # db_session.commit()
    # db_session.close()
    #正向查询
    # g_list=db_session.query(Girl).all()
    # for row in g_list:
    #     for item in row.girl2boy:
    #         print(row.id,row.name,item.name)
    
    #反向查询
    b_list=db_session.query(Boy).all()
    for row in b_list:
        for item in row.boy2girl:
            print(row.id,row.name,item.name)
  • 相关阅读:
    阿里云 MaxCompute 2019-12 月刊
    【原】react+redux实战
    【原】http缓存与cdn相关技术
    【原】redux异步操作学习笔记
    【原】javascript最佳实践
    【原】react做tab切换的几种方式
    【原】web移动端常用知识点笔记
    【原】移动端界面的适配
    【原】js检测移动端横竖屏
    【原】javascript数组操作
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/10384837.html
Copyright © 2011-2022 走看看