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)
原文地址:https://www.cnblogs.com/ssyfj/p/8563650.html