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)
  • 相关阅读:
    04_远程管理常用命令
    03_文件和目录常用命令
    02_Linux 终端命令格式
    01_常用 Linux 命令的基本使用
    test
    centOS 7 更改root密码
    安装 centos7
    1
    IO模型
    使用git连接到Github
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8563650.html
Copyright © 2011-2022 走看看