SQLAlchemy的使用---外鍵ForeignKey數據增刪改查


# 添加數據
from sqlalchemy.orm import sessionmaker
from create_table_ForeignKey import engine, Student, School

Session = sessionmaker(engine)
db_session = Session()

# 插入數據
sch_obj = School(name='Treasure')
db_session.add(sch_obj)
db_session.commit()


sch = db_session.query(School).filter(School.name == 'Treasure').first()
stu_obj = Student(name='徐建', school_id=sch.id)
db_session.add(stu_obj)
db_session.commit()
db_session.close()

#2 添加數據 - 反向relationship

sch_obj = School(name='TreasureShanghai')
sch_obj.sch2stu = [Student(name='徐建-上海'),
                   Student(name='徐建2-上海')]
db_session.add(sch_obj)
db_session.commit()
db_session.close()

#3.添加數據 - 正向relationship
stu_obj = Student(name='徐建3', stu2sch=School(name='TreasreShenzhen'))
db_session.add(stu_obj)
db_session.commit()
db_session.close()
添加數據
# 修改數據
from sqlalchemy.orm import sessionmaker
from create_table_ForeignKey import engine, Student, School

Session = sessionmaker(engine)
db_session = Session()

sch = db_session.query(School).filter(School.name == 'TreasureShanghai').first()
db_session.query(Student).filter(Student.school_id == sch.id).delete()
db_session.commit()
db_session.close()
刪除數據
# 修改數據
from sqlalchemy.orm import sessionmaker
from create_table_ForeignKey import engine, Student, School

Session = sessionmaker(engine)
db_session = Session()

sch = db_session.query(School).filter(School.name == 'Treasure').first()
db_session.query(Student).filter(Student.name == '徐建3').update({'school_id':sch.id})
db_session.commit()
db_session.close()
修改數據
# 查詢數據
from sqlalchemy.orm import sessionmaker
from create_table_ForeignKey import engine, Student, School

Session = sessionmaker(engine)
db_session = Session()

# 查詢數據 relationship 正向
stu = db_session.query(Student).all()

for row in stu:
    print(row.id, row.name, row.stu2sch.name)


# 查詢數據 relationship 反向
sch = db_session.query(School).all()

for row in sch:
    print(row.id, row.name, [i.name for i in row.sch2stu])
查詢數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM