Python sql_orm 外键关联

本文介绍了一个使用Python的SQLAlchemy库进行数据库操作的例子,通过ORM方式定义了学生基本信息和学习状态两个模型,并展示了如何创建数据库表及添加数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import sqlalchemy
from sqlalchemy import create_engine,ForeignKey
from sqlalchemy import Column,Integer,String,Date,Enum
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker,relationship

Base= declarative_base()
engine=create_engine("mysql+pymysql://root:xsy667437@localhost/studentdb",encoding="utf-8",echo=False)
class Student_basic(Base):
__tablename__='student_basic'
id=Column(Integer,primary_key=True,autoincrement=True)
name=Column(String(32),nullable=False)
register_date = Column(Date, nullable=False)
gender=Column(Enum("M","F"),nullable=False)
def __repr__(self):
return "<%s name: %s>"%(self.id,self.name)
class Student_study(Base):
__tablename__='student_study'
id=Column(Integer,primary_key=True,autoincrement=True)
day=Column(Integer,nullable=False)
status=Column(String(32),nullable=False)
study_id=Column(Integer,ForeignKey("student_basic.id"))
student=relationship("Student_basic",backref="my_classes")
def __repr__(self):
return "<%s day: %s status :%s>"%(self.student.name,self.day,self.status)
Base.metadata.create_all(engine)
Session_class=sessionmaker(bind=engine)
session=Session_class()
# s1=Student_basic(name="N1",register_date="2016-09-01",gender="M")
# s2=Student_basic(name="N2",register_date="2017-09-01",gender="M")
# s3=Student_basic(name="N3",register_date="2018-09-01",gender="M")
# stu1=Student_study(day=3,status="yes",study_id=1)
# stu2=Student_study(day=3,status="yes",study_id=2)
# stu3=Student_study(day=3,status="no",study_id=3)
# session.add_all([stu1,stu2,stu3])
stu_obj=session.query(Student_basic).filter(Student_basic.name=="N1").first()
print(stu_obj.my_classes)
session.commit()

转载于:https://www.cnblogs.com/xiesongyou/p/7812982.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值