• python---ORM之SQLAlchemy(4)relationship多对多练习


    练习一:朋友

    import sqlalchemy
    from sqlalchemy import create_engine
    from sqlalchemy import Column, String, Integer, ForeignKey
    from sqlalchemy.orm import sessionmaker, relationship
    from sqlalchemy.ext.declarative import declarative_base
    
    engine = create_engine("mysql+pymysql://root:root@127.0.0.1/t2?charset=utf8")
    
    Base = declarative_base()
    
    
    class Men_to_Wemon(Base):
        __tablename__ = "men_to_women"
    
        nid = Column(Integer, primary_key=True)
        men_id = Column(Integer, ForeignKey('men.id'))
        women_id = Column(Integer, ForeignKey('women.id'))
    
    class Men(Base):
        __tablename__ = 'men'
    
        id = Column(Integer, primary_key=True)
        name = Column(String(40))
        age = Column(String(10))
        #gf = relationship("Women", secondary=Men_to_Wemon.__table__)
    
    class Women(Base):
        __tablename__ = "women"
    
        id = Column(Integer, primary_key=True)
        name = Column(String(40))
        age = Column(String(10))
    
        bf = relationship("Men",secondary=Men_to_Wemon.__table__,backref='gf') 
    #backref相当于在men表中加了一个关于women的对象叫gf
       #secondary是第三张表,用于多对多 #bf
    = relationship("Men",secondary=Men_to_Wemon.__table__) Base.metadata.create_all(engine) MySession = sessionmaker(bind=engine) session = MySession() m1 = session.query(Men).filter_by(id=2).first() #所有女 w1 = session.query(Women).all() m1.gf = w1 session.add(m1) session.commit()

    练习二:主机和分组

    import sqlalchemy
    from sqlalchemy import create_engine
    from sqlalchemy import Column,String,ForeignKey,Integer
    from sqlalchemy.orm import relationship,sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    engine = create_engine("mysql+pymysql://root:root@127.0.0.1/t2?charset=utf8")
    Base = declarative_base()
    
    class HostToGroup(Base):
        __tablename__ = 'host_2_group'
        nid = Column(Integer,primary_key=True)
        host_id = Column(Integer,ForeignKey('host.id'))
        group_id = Column(Integer,ForeignKey('group.id'))
    
    class Group(Base):
        __tablename__ = 'group'
        id = Column(Integer,primary_key=True)
        name = Column(String(40),unique=True)
    
    class Host(Base):
        __tablename__ = 'host'
        id = Column(Integer,primary_key=True)
        hostname = Column(String(40),unique=True)
        ip_addr = Column(String(40))
        port = Column(String(10),default=22)
        group = relationship('Group',secondary=HostToGroup.__table__,backref="host_list")
    
    Base.metadata.create_all(engine)
    
    MySession = sessionmaker(bind=engine)
    session = MySession()
    
    # g1 = Group(name='g1')
    # g2 = Group(name='g2')
    # g3 = Group(name='g3')
    # g4 = Group(name='g4')
    #
    # session.add_all([g1,g2,g3,g4])
    # session.commit()
    #
    # h1 = Host(hostname='h1',ip_addr='192.168.0.0.1')
    # h2 = Host(hostname='h2',ip_addr='192.168.0.0.2',port=10)
    # h3 = Host(hostname='h.',ip_addr='192.168.0.0.3',port=1000)
    
    # h1.group=[g2,g4]
    # session.add_all([h1,h2,h3])
    # session.commit()
    
    # groups = session.query(Group).all()
    # h2 = session.query(Host).filter(Host.hostname=='h2').first()
    # h2.group=groups[:-1]
    #
    # session.add(h2)
    # session.commit()
    
    g4 = session.query(Group).filter(Group.name=='g4').first()
    
    obj1 = session.query(Host).filter(Host.hostname=='h2').update({'port':4214})
    obj2 = session.query(Host).filter(Host.hostname=='h2').first()
    
    g4.host_list.append(obj2)
    
    session.add(g4)
    session.commit()
  • 相关阅读:
    CXF.bat
    终于懂了:FWinControls子控件的显示是由Windows来管理,而不是由Delphi来管理(显示透明会导致计算无效区域的方式有所不同——透明的话应减少剪裁区域,所以要进行仔细计算)
    DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)
    Delphi体系内部的4种消息传递办法(Send,Post,Perform,Dispatch)
    delphi高手突破之异常及错误处理
    Android 短信模块分析(三) MMS入口分析
    delphi如何加上spliter分割条,任意调整大小
    浅拷贝与深度拷贝(原型模式)
    delphi高手突破学习笔记之面向对象类和对象的本质(有汇编解释 good)
    delphi模态窗体最小化会隐藏的问题
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8570014.html
Copyright © 2020-2023  润新知