Mysql-Sqlalchemy-多表操作

Posted 努力乄小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql-Sqlalchemy-多表操作相关的知识,希望对你有一定的参考价值。

import sqlalchemy

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
\'\'\'Column导入\'\'\'
from sqlalchemy import Column, String, Integer, DATE,ForeignKey
\'\'\'导入游标\'\'\'
from sqlalchemy.orm import sessionmaker,relationship

engine =create_engine("mysql+pymysql://xiaopang:521521@192.168.50.129/oldboydb",
                      encoding=\'utf-8\') #可以加echo=True显示数据
\'\'\'生成orm基类\'\'\'
Base =declarative_base()


class Student(Base):
    __tablename__ = \'student\'  # 表名
    id = Column(Integer, primary_key=True)
    name =Column(String(32),nullable=False)
    register_date = Column(DATE, nullable=False)

    def __repr__(self):
        return "< %s name:%s >"  % (self.id,self.name)

class StudyRecord(Base):
    __tablename__ = "study_record"
    id = Column(Integer, primary_key=True)
    day =Column(Integer,nullable=False)
    status = Column(String(32),nullable=False)
    stu_id =Column(Integer,ForeignKey("student.id"))

    student = relationship("Student", backref="my_study_record")

    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() # 生成session实例相当于cursor游标


\'\'\'多表插入数据\'\'\'
# s1 =Student(name="goupang",register_date="2018-06-01")
# s2 =Student(name="siwanyi",register_date="2018-06-02")
# s3 =Student(name="yaosini",register_date="2018-06-03")
# s4 =Student(name="xiaopang",register_date="2018-06-04")

# study_obj1=StudyRecord(day=1,status="Yes",stu_id=1)
# study_obj2=StudyRecord(day=2,status="No",stu_id=1)
# study_obj3=StudyRecord(day=3,status="Yes",stu_id=1)
# study_obj4=StudyRecord(day=1,status="Yes",stu_id=2)

#Session.add_all([study_obj1,study_obj2,study_obj3,study_obj4])

\'\'\'多表查询\'\'\'
stu_obj=Session.query(Student).filter().first()
#调用my_study_record就是StudyRecord里面的所有属性(所有字段的数据)
print(stu_obj.my_study_record)
Session.commit()#提交

 

思路及过程:两个表互相取数据,通过ralationship关系连接,写到内存中

 

以上是关于Mysql-Sqlalchemy-多表操作的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate的HQL多表查询

python flask(多对多表查询)

MyBatis注解开发多表代码操作——手把手教你实战操作

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程