Python sqlalchemy orm 外键关联
创建外键关联 并通过relationship 互相调用
如图:

实现代码:
import sqlalchemy # 调用链接数据库
from sqlalchemy import create_engine
# 调用基类Base
from sqlalchemy.ext.declarative import declarative_base
# 调用Column创建字段 加类型
from sqlalchemy import Column, Integer, String,DATE,ForeignKey
# 调用操作链接,反查
from sqlalchemy.orm import sessionmaker,relationship # create_engine 链接数据库 mysql+pymysql:链接对象//用户名:密码@主机/DB
# encoding='utf-8' 链接字符集 ,echo=True 把所有信息打印出来
engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
#echo=True
) # 生成orm基类
Base = declarative_base() class Student(Base):
__tablename__ = "student" # 设置id为主键
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为主键
id = Column(Integer,primary_key=True)
day = Column(Integer,nullable=False)
status = Column(String(32),nullable=False) # 将student表的id字段 设置为外键
stu_id = Column(Integer,ForeignKey("student.id")) # -允许你在Student表里通过backref字段反向查出所有它在表里的关联项-
# study_record表 通过student字段查找Student表内所有字段
# student表 通过my_study_record来访问study_record表内字段
# 注:relationship是orm自己通过在内存中类对象关联实现。
student = relationship("Student", backref="my_study_record") def __repr__(self):
return "<%s day:%s status:%s>" %(self.student.name,self.day,self.status) #---------------1.创建表-----------------#
# 创建表结构
# Base.metadata.create_all(engine)
#---------------------------------------# # bind=engine 绑定engine socket实例
Session_class = sessionmaker(bind=engine) # 生成session实例,如同pymysql内的cursor
Session = Session_class() #---------------2.插入数据-----------------# # Student 创建插入数据
# s1 = Student(name="kevin",register_date="2014-05-21")
# s2 = Student(name="Jack",register_date="2014-05-22")
# s3 = Student(name="Rain",register_date="2014-05-23")
# s4 = Student(name="Eric",register_date="2014-05-24") # StudyRecord 创建插入数据
# 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,])
#---------------------------------------# #---------------3.查看数据-----------------#
# 指定查看"kevin"学员
stu_obj = Session.query(Student).filter(Student.name=="kevin").first()
print(stu_obj.my_study_record)
#---------------------------------------# # 执行事务
Session.commit()
Python sqlalchemy orm 外键关联的更多相关文章
- sqlalchemy多外键关联
一.前言 如果有张表A的多个字段关联另一张表B的一个字段,就如同一个客户表的账单地址和发货地址,同时关联地址表中的id字段. 二.事例 # -*- coding: UTF-8 -*- from sql ...
- python SQLAchemy多外键关联
关联同一张表的两个字段 Customer表有2个字段都关联了Address表 创建表结构 orm_many_fk.py 只创建表结构 from sqlalchemy import Integer, F ...
- sqlalchemy操作----外键关联,relationship
... #!_*_coding:utf-8_*_ #__author__:"Alex huang" import sqlalchemy from sqlalchemy import ...
- ORM外键关联
#coding=utf-8 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarativ ...
- Python - Django - ORM 外键操作
models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...
- Python sqlalchemy orm 多对多外键关联
多对多外键关联 注:使用三张表进行对应关联 实现代码: # 创建3个表 配置外键关联 # 调用Column创建字段 加类型 from sqlalchemy import Table, Column, ...
- Python sqlalchemy orm 多外键关联
多外键关联 注:在两个表之间进行多外键链接 如图: 案例: # 创建两张表并添加外键主键 # 调用Column创建字段 加类型 from sqlalchemy import Integer, For ...
- pythonのsqlalchemy外键关联查询
#!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.dec ...
- sqlalchemy外键关联
一.创建两张表,并关联外键 导入ForenginKey模块 # -*- coding: UTF-8 -*- from sqlalchemy import create_engine from sqla ...
随机推荐
- I - All X
F(x,m) 代表一个全是由数字x组成的m位数字.请计算,以下式子是否成立: F(x,m) mod k ≡ c Input 第一行一个整数T,表示T组数据. 每组测试数据占一行,包含四个数字x,m,k ...
- ajax-addclass
- jquery操作checkBox 一次取消选中后不能再选中
$("input[type='checkbox']").each(function(){ $(this).attr("checked","checke ...
- 终于等到你!WebOptimizer - A bundler and minifier for ASP.NET Core
迷人的 ASP.NET Core 有一个美中不足之处,自从一开始接触它到现在,我就一直不喜欢,一直想找到替代品,甚至想过自己实现一个,它就是 BundlerMinifier . 昨天面对 bundle ...
- 实体框架—Entity Framework
简称EF,是微软以ADO.NET为基础所发展出来的对象关系对应(ORM)解决方案. EF就是用来处理数据的,与数据库打交道.但是底层还是用到了ADO.NET的那一套东西. 为什么叫对象关系对应解决方案 ...
- post body 传输参数
postman 示例: 请求地址:http://member-system-api.dd01.work/api/inApp 设置headers头:Content-Type applicat ...
- you-get模块
You-Get是一个基于 Python 3 的下载工具.使用 You-Get 可以很轻松的下载到网络上的视频.图片及音乐. 转载https://www.cnblogs.com/wangchuanyan ...
- μCOS-II移植 - 基于CortexM3
μCOS-II是一个经典的RTOS. 任务切换对于RTOS来说是最基本也是最核心的部分,除此之外还有任务调度算法. 先来看看基于stm32f107的任务切换代码: ;***************** ...
- Selenium IDE
Selenium IDE : Selenium IDE作为Firefox浏览器的一款插件,依附于firefox浏览器,打开它的录制功能,它会忠实的记录,你对firefox的操作,并可以回放它所记录的你 ...
- Hibernate 补充 ManyToOne、OneToMany、OneToOne的使用例
1.前言 Hibernate 为程序员提供一种级联操作,在编写程序时,通过 Hibernate 的级联功能可以很方便的操作数据库的主从表的数据, 我们最常用的级联是级联保存和级联删除. ...