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)
  • 相关阅读:
    线程基础之进程,线程,任务
    Jobs深入学习
    Quartz的API简介及Jobs和Trigger介绍
    Quartz入门及简单实现
    maven仓库配置阿里云镜像
    Activiti图表bpmn对应的xml文件
    Activiti流程设计工具
    Activiti的25张表
    subprocess.Popen指令包含中文导致乱码问题解决
    Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/10384837.html
Copyright © 2011-2022 走看看