import sqlalchemy
from sqlalchemy import create_engine #连接数据库
from sqlalchemy.ext.declarative import declarative_base #orm基类
from sqlalchemy import Column,Integer,String,DATE,ForeignKey#Column列
from sqlalchemy.orm import sessionmaker,relationship
engine=create_engine("mysql+pymysql://root:123456@192.168.0.6/wupeiqi",
                     encoding='utf-8',echo=False)#连接数据库 echo=TRUE输出执行过程

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的id
    #StudyRecord通过student字段查询Student表里所有数据  在内存里建立relationship关系
    student=relationship("Student",backref="my_study_record")#允许你可以在student表里通过my_study_record字段反查Studyrecord所有数据
    def __repr__(self):
        return "<%s day:%s status:%s>"%(self.student.name,self.day,self.status)
base.metadata.create_all(engine)#创建表

#连接mysql
Session_class = sessionmaker(bind=engine)  # 创建与数据库的连接session class ,注意,这里返回给session的是个class,不是实例
session = Session_class()  # 生成session实例 session会话 类似cursor
'''
#插入数据
s1=Student(name="kobe",register_date="2017-05-16")
s2=Student(name="jack",register_date="2017-04-16")
s3=Student(name="duncon",register_date="2017-06-16")
s4=Student(name="Allen",register_date="2017-07-16")

record_1=StudyRecord(day=1,status="YES",stu_id=1)
record_2=StudyRecord(day=2,status="NO",stu_id=1)
record_3=StudyRecord(day=3,status="YES",stu_id=1)
record_4=StudyRecord(day=1,status="YES",stu_id=2)

session.add_all([s1,s2,s3,s4,record_1,record_2,record_3,record_4])
session.commit()
'''
#外键查询数据
stu_obj=session.query(Student).filter(Student.name=="kobe").first()
print(stu_obj.my_study_record)

转载于:https://blog.51cto.com/13707996/2361519

sqlalchemy_外键连接表相关推荐

  1. MySQL 语句外键 连接

    外键 定义: 外键是指引用另一个表中的一列或多列,被引用的列具有主键约束或唯一约束. 目的: 外键用于建立和加强两个表数据之间的连接. 概念:1. 主表--被引用的表:2.从表 --引用外键的表 . ...

  2. 3,外键之表关联关系,修改表,复制表

    今日内容:   一:外键    一对多:    多对多:    一对一:   二:了解知识点    复制表    修改表相关操作       前戏:    所有的信息都在一张表中所带来的的问题     ...

  3. mysql 删除表数据_主外键关联表的数据删除策略

    说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个, 各位有空帮砍下,https://w.url.cn/s/AzlPAB9,或者扫下 ...

  4. Flask之sqlalchemy过滤、外键和表单关系

    一.过滤条件 过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过filter方法实现的 equals query.filter(User.name == ...

  5. mysql创建外键的表_Mysql表创建外键报错解决方案

    Mysql表创建外键报错解决方案,字段,名字,数据库,更新时间,歧义 Mysql表创建外键报错解决方案 易采站长站,站长之家为您整理了Mysql表创建外键报错解决方案的相关内容. 数据库表A: CRE ...

  6. 5月9日 python学习总结 外键、表之间的关联关系、修改表、清空表内容、复制表...

    一.外键foreign key    外键约束: 1.必须先创建被关联表才能创建关联表 2.插入记录时,必须先插入被关联表的记录,才能插入关联表(要用到被关联表)的记录 3.若不设置同步更新和同步删除 ...

  7. 一个成绩表 该关系模式的外键_MySQL表之间的关系

    Ⅰ 一对多 员工表与部门表为例>>>一个部门有多名员工 先站在员工表思考一个员工能否对应多个部门(一条员工数据能否对应多条部门数据)不能!!!(不能直接得出结论 一定要两张表都考虑完 ...

  8. mysql多个外键删除设置_Mysql在删除集上使用多个外键创建表

    我试图创建一个具有删除/更新约束的多个外键的数据库,但我得到一个错误代码1005与以下sql脚本: CREATE TABLE Worker ( WorkerID smallint auto_incre ...

  9. Oracle中给表添加主键 外键,给表中添加主键、外键

    1.创建表的同时创建主键约束 (1)无命名 create table student ( studentid int primary key not null, studentname varchar ...

最新文章

  1. matlab-矩阵应用
  2. 【网络安全】一次实战中对tp5网站getshell方式的测试
  3. java redis集群连接池_(08)redis之使用java客户端、spring连接redis、redis集群示例...
  4. [css] CSS content属性特殊字符有哪些?
  5. 【牛客 - 315B】 勇气获得机(二叉树性质,思维,知识点,tricks)
  6. Oracle系列:Oracle RAC集群体系结构
  7. FIREDAC连接SQLITE乱码的解决
  8. HTML5+学习笔记2-------边看代码边研究貌似还是有点问题...还在研究中api中
  9. 程序员硬核吃瓜宋慧乔宋仲基离婚、范冰冰李晨分手!
  10. 2016年1月中国域名商解析量14强:排名变动大
  11. SoapUI、Jmeter、Postman三种接口测试工具的比较分析
  12. 五角星是不是旋转对称图形_新部编二年级下册数学第10单元总复习教案,克和千克、图形的运动...
  13. 杭电1181--变形课(Dfs)
  14. 三个数比大小c语言_C语言必学知识点【结构体】用法很多,坑也很多!
  15. 删除或复制文件提示:文件名无效或太长/目标路径太长/找不到该项目
  16. Tilera推用于云计算的多核处理器Meshed
  17. python:series详解和数据获取
  18. 全链路压测那点事(一)
  19. java 成绩_java输出各种学生成绩
  20. springboot整合redisson实现分布式锁

热门文章

  1. LAMP配置虚拟目录
  2. linux笔记:linux帮助命令,man,help,whatis,apropos
  3. 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
  4. Android -- 自动挂断电话
  5. 运用枚举展示静态数据
  6. Delphi 与 DirectX 之 DelphiX(93): TDIB.DrawDarken();
  7. 单机版kubernetes1.13安装
  8. 数据结构与算法基础-02
  9. px、pt、em、rem 的区别
  10. Spring中的Bean配置