#!/usr/bin/env python

 import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,DATE,Enum,ForeignKey
from sqlalchemy.orm import sessionmaker,relationship # 创建连接 echo=True 就会打印出所有过程信息
engine = create_engine("mysql+pymysql://root:root@localhost/testuser",encoding="utf-8",echo=True) #
Base = declarative_base() # 生成orm基类 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 "< day:%s status:%s>" % (self.id, self.status) Base.metadata.create_all(engine) # 创建表结构 Session_class = sessionmaker(bind=engine) # 创建与数据库的会话session class 注意,这里返回的是一个class,不是实例 session = Session_class() # s1 = Student(name="Tom",register_Date="2018-08-08")
# s2 = Student(name="Jerry",register_Date="2018-06-08")
# s3 = Student(name="Lucy",register_Date="2018-08-28")
# s4 = Student(name="Lily",register_Date="2018-08-18")
#
# 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([s1,s2,s3,s4,study_obj1,study_obj2,study_obj3,study_obj4])
# session.commit() stu_obj = session.query(Student).filter(Student.name=="Tom").first() print(stu_obj.my_study_record)

解释:

  (1)创建表:将43-54行代码解封,此时会自动为您创建相关联的表

重点理解:

  32行:student = relationship("Student",backref="my_study_record")

  这里需要引入  from sqlalchemy.orm import sessionmaker,relationship

  32行代码用途,可以通过Student 在表StudyRecord中直接引用表Student  那么可以通过 my_study_record 直接引用StudyRecord中的数据。这是因为他们两者存在外键关联,所以当我们执行第58行的时候,他就会根据外键去查询study_record 中的数据。

pythonのsqlalchemy外键关联查询的更多相关文章

  1. 基于EF的数据外键关联查询

    现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...

  2. sqlalchemy外键关联

    一.创建两张表,并关联外键 导入ForenginKey模块 # -*- coding: UTF-8 -*- from sqlalchemy import create_engine from sqla ...

  3. python SQLAchemy外键关联

    join 1.利用filter import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarati ...

  4. ofbiz多表外键关联查询

    实现一:Screem.xml 中的 section 里,加 <action>, 加 get-related 实现二:在代码中使用 DynamicViewEntity对象,加入addMemb ...

  5. .netcore2.1 ef 使用外键关联查询

    //实体类 [Table("invoiceinfo", Schema = "obs")] public class invoice { [Key] public ...

  6. Python sqlalchemy orm 多对多外键关联

    多对多外键关联 注:使用三张表进行对应关联 实现代码: # 创建3个表 配置外键关联 # 调用Column创建字段 加类型 from sqlalchemy import Table, Column, ...

  7. Python sqlalchemy orm 多外键关联

     多外键关联 注:在两个表之间进行多外键链接 如图: 案例: # 创建两张表并添加外键主键 # 调用Column创建字段 加类型 from sqlalchemy import Integer, For ...

  8. Python sqlalchemy orm 外键关联

    创建外键关联 并通过relationship 互相调用 如图: 实现代码: import sqlalchemy # 调用链接数据库 from sqlalchemy import create_engi ...

  9. sqlalchemy外键和relationship查询

    前面的文章中讲解了外键的基础知识和操作,上一篇文章讲解了sqlalchemy的基本操作.前面两篇文章都是作为铺垫,为下面的文章打好基础.记得初一时第一次期中考试时考的不好,老爸安慰我说:“学习是一个循 ...

随机推荐

  1. (矩阵快速幂)HDU1575 Tr A

    Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. DB9 ------ 接口定义

    下图是母座和公座的接口定义: 特别提醒:以上是公座和母座的接口定义,如果是串口线,RXD就变成TXD,以此类推.

  3. printf不定参数

    title: printf不定参数 tags: C ARM date: 2018-10-21 12:14:58 --- 不定参数的传递 函数调用时参数传递是使用堆栈来实现的,参数入栈顺序是从右向左,在 ...

  4. MySQL常见报错汇总

    1>.ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it canno ...

  5. vue实现筛选功能,文字选中变色

    <template> <Poptip trigger="hover" title="Title" content="content& ...

  6. 极光推送API

    https://github.com/jpush/jpush-api-ruby-client/blob/master/docs/Guides.md#%E6%9B%B4%E6%96%B0%E8%AE%B ...

  7. 腾讯云部署javaWeb项目之一应用服务器

    1.登录腾讯云,点击登录选择浏览器登录.输入用户名 按回车键 然后输入 密码. 2.安装java环境,直接命令:yum -y install java-1.8.0-openjdk java-1.8.0 ...

  8. Entity Framework 学习总结之十一:POCO

    POCO Entity Framework 4.0 为实体提供了简单传统 CLR 对象( Plain Old CLR Object / POCO )支持.实体对象可以独立于 EF 存在,由此 EF 更 ...

  9. python 精华梳理(已理解并手写)--全是干货--已结

    基础部分 map,reduce,filter,sort,推导式,匿名函数lambda , 协程,异步io,上下文管理 自定义字符串转数字方法一不使用reduce import re def str2i ...

  10. 056、macvlan网络结构分析(2019-03-25 周一)

    参考https://www.cnblogs.com/CloudMan6/p/7383919.html   macvlan不依赖linux bridge   brctl show 可以确认没有创建新的b ...