zoukankan      html  css  js  c++  java
  • sqlalchemy操作----外键关联,relationship

    ...

    #!_*_coding:utf-8_*_
    #__author__:"Alex huang"
    import sqlalchemy
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column,Integer,String,ForeignKey
    from sqlalchemy.orm import relationship
    
    
    engine = create_engine("mysql+pymysql://hrg:123@192.168.80.100:3306/test",encoding='utf8')
    Base = declarative_base()  #生成orm基类
    
    class students(Base):
        __tablename__ = 'students' #表名
        id = Column(Integer, primary_key=True)
        name = Column(String(32))
        password = Column(String(64))
        def __repr__(self):
            return "id:%s name:%s" %(self.id,self.name)
    
    class studyrecord(Base):
        __tablename__ = 'studyrecord' #表名
        id = Column(Integer, primary_key=True)
        day = Column(String(32))
        status = Column(String(32))
        stu_id = Column(Integer,ForeignKey("students.id"))  #创建外键
        students = relationship("students",backref="my_studyrecord")  #创建关系,是在内存中映射的,没有实际创建表,
        #backref回调引用,students表可以通过my_studyrecord来引用studyrecord的数据
        def __repr__(self):
            return "%s day:%s status:%s" %(self.students.name,self.day,self.status)
    
    Base.metadata.create_all(engine)  #创建表
    Session_class = sqlalchemy.orm.session.sessionmaker(bind=engine)  # 创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
    Session = Session_class()  # 生成session实例
    #
    #插入  第一次运行先插入数据
    # s1 = students(name='hrg',password='111')
    # s2 = students(name='keke',password='122')
    # s3 = students(name='tom',password='333')
    # r1 = studyrecord(day='1',status='yes',stu_id='1')
    # r2 = studyrecord(day='1',status='yes',stu_id='2')
    # r3= studyrecord(day='2',status='no',stu_id='1')
    # r4 = studyrecord(day='3',status='yes',stu_id='1')
    # r5 = studyrecord(day='3',status='yes',stu_id='2')
    #
    # Session.add_all([s1,s2,s3,r1,r2,r3,r4,r5])
    # Session.commit()
    
    data = Session.query(students).filter(students.name=='hrg').first()  #先students表里名称为hrg的第一条记录
    print(data.my_studyrecord) #打印hrg在studyrecord中的相关记录
    

      ...

  • 相关阅读:
    (一)研究方法入门
    机器学习入门之认知
    夯实Java:从面向对象说起
    不同子系统采用不同MySQL编码LATIN1和UTF8的兼容
    性能优化 java 24 次阅读 · 读完需要 15 分钟 0
    如何用纯 CSS 创作一个充电 loader 特效
    如何用纯 CSS 创作一个 3D 文字跑马灯特效
    如何用纯 CSS 绘制一颗闪闪发光的璀璨钻石
    如何用 CSS 创作一个立体滑动 toggle 交互控件
    如何用纯 CSS 创作一个金属光泽 3D 按钮特效
  • 原文地址:https://www.cnblogs.com/alex-hrg/p/9135751.html
Copyright © 2011-2022 走看看