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)
  • 相关阅读:
    Eclipse中支持js提示
    数据库命名规则
    JavaWeb 命名规则
    Ajax&json
    js中,var 修饰变量名和不修饰的区别
    javaScript知识点
    Bootstrap 栅格系统
    文本框如果不输入任何内容提交过后是一个空字符串还是null
    根据汇总数量依次扣减的SQL新语法
    asp.net中使用forms验证
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8563650.html
Copyright © 2011-2022 走看看