zoukankan      html  css  js  c++  java
  • python---ORM之SQLAlchemy(2)外键使用

    import sqlalchemy
    from sqlalchemy import create_engine
    from sqlalchemy import Column,String,Integer,ForeignKey
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    engine = create_engine("mysql+pymysql://root:root@127.0.0.1/t1")
    
    Base = declarative_base()
    
    class Father(Base):
        __tablename__ = "father"
    
        id = Column(Integer,primary_key=True,autoincrement=True)
        name = Column(String(40),unique=True)
        age = Column(Integer)
    
    class Son(Base):
        __tablename__ = 'son'
    
        id = Column(Integer,primary_key=True,autoincrement=True)
        name = Column(String(40),unique=True)
        age = Column(Integer)
    
        father_id = Column(Integer,ForeignKey('father.id'))
    
    Base.metadata.create_all(engine)
    
    MySession = sessionmaker(bind=engine)
    session = MySession()
    
    # f = Father(name='ld',age=21)
    # session.add(f)
    # session.commit()
    # 注意这里需要先将father数据插入,然后son才会获得该正确的father_id号
    #
    # s1 = Son(name='ww',age=1,father_id=1)
    # s2 = Son(name='wb',age=0,father_id=1)
    #
    # session.add_all([f,s1,s2])
    # session.commit()
    ret = session.query(Father.name,Son.id).join(Son).all()#列表,取出多个会是列表
    for i in ret:
        print(i.name,i.id)
    
    #别名使用label ret
    = session.query(Father.name,Son.name.label('sname')).join(Son).first()#第一个元素 print(ret.name,ret.sname)
  • 相关阅读:
    软件开发过程须贯彻评估和测试
    【灌水】多维成功论
    改进c系列(目录)
    网站管理艺术
    .net 跨平台也是一句谎言
    用户界面和逻辑应该分离
    设计模式
    程序员找不到工作是因为管理差
    编码阶段
    保证软件开发质量的一种管理学
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8563650.html
Copyright © 2011-2022 走看看