3.ORM框架一对多的关系及使用
一对多就是主键与外键的关系,通过一个用户表,角色表进行举例子
角色表role:有外键,对应的是user表的主键

用户表users:

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123456@127.0.0.1:3306/rupeng"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False db=SQLAlchemy(app) # 角色 1的一方
class Role(db.Model):
__tablename__="role"
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(20),unique=True)
# backref在这行代码的作用是:给前面的User添加一个属性,名字焦作backref的值
# 以便可以直接通过user.role方法到一的一方的数据
users=db.relationship("User",backref="role")
def __repr__(self):
return "%d,%s" %(self.id,self.name) # 用户 多的一方
class User(db.Model):
__tablename__="users"
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(20),unique=True)
# 设置外键
role_id=db.Column(db.Integer,db.ForeignKey(Role.id)) def __repr__(self):
return "%d %s" %(self.id,self.name) @app.route("/")
def index():
return "index" @app.route("/show")
def Show():
# user=Role().query.all()
role=Role.query.get(1)
user=User.query.get(3)
# print(role.id,role.name)
# 查询id=2(user角色下的用户都有谁)
print(role.users)
print(user.role)
return render_template("showdata.html") if __name__ == '__main__':
db.drop_all()
db.create_all() ro1=Role(name='admin')
ro2=Role(name='user')
db.session.add_all([ro1,ro2])
db.session.commit() user1=User(name='laowang',role_id=ro1.id)
user2=User(name='laoli',role_id=ro1.id)
user3=User(name='laozhang',role_id=ro2.id)
db.session.add_all([user1,user2,user3]) db.session.commit()
app.run(debug=True)
上面的代码就是创建了一个一对多的关系。
3.ORM框架一对多的关系及使用的更多相关文章
- orm框架与缓存的关系
1.mybatis规定,一级缓存没必要bean类实现序列化,但二级缓存bean类必须实现序列化. 因为二级缓存是基于namespace的也就是基于接口的,二级缓存可以设置存储源,可以是redis或者m ...
- ORM框架是什么
ORM框架是什么 对象关系映射,目前数据库是关系型数据库 ORM 主要是把数据库中的关系数据映射称为程序中的对象 目前集中常见的ORM框架1 Nhibernate原因:用的比较多,资料也比较好找. ...
- ORM框架之SQLALchemy
一.面向对象应用场景: 1.函数有共同参数,解决参数不断重用: 2.模板(约束同一类事物的,属性和行为) 3.函数编程和面向对象区别: 面向对象:数据和逻辑组合在一起:函数编程:数据和逻辑不能组合在一 ...
- ORM框架(对象关系映射)
Entity Framework 学习初级篇1--EF基本概况 http://www.cnblogs.com/xray2005/archive/2009/05/07/1452033.html ORM ...
- Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终端打印SQL语句,脚本调试)
Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终 ...
- 对象关系映射(ORM)框架GreenDao简介和基本使用
官网上的介绍,greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案. GreenDao特点 性能最大化,可能是Android平台上最快的ORM框架 易于使用的A ...
- java框架篇---hibernate(一对多)映射关系
一对多关系可以分为单向和双向. 一对多关系单向 单向就是只能从一方找到另一方,通常是从主控类找到拥有外键的类(表).比如一个母亲可以有多个孩子,并且孩子有母亲的主键作为外键.母亲与孩子的关系就是一对多 ...
- flask SQLAlchemy中一对多的关系实现
SQLAlchemy是Python中比较优秀的orm框架,在SQLAlchemy中定义了多种数据库表的对应关系, 其中一对多是一种比较常见的关系.利用flask sqlalchemy实现一对多的关系如 ...
- Python操作mysql之SQLAchemy(ORM框架)
SQLAchemy SQLAchemy 解析: SQLAchemy是python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作, 简言之便是:将对象转换成SQ ...
随机推荐
- opencv:轮廓匹配
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- python+tkinter制作一个可自定义的动态时钟及详细解释,珍藏版
1.效果图 2.完整代码 #第1步:导出模块 from tkinter import * import math,time #第2步:定义窗口的相关设置 root = Tk() root.title( ...
- java 并交集运算
在面试的过程中,忘记了List中还可以进行交并集运算,这也是常见的数据问题啊,这也是常见的数据结构问题---集合,面试的过程中一直没有想到这种数据结构 java中API中已经集成了并交集的运算. 代码 ...
- token是个什么东西?怎样生成并携带token
什么是token及怎样生成token 转载自:https://www.cnblogs.com/lufeiludaima/p/pz20190203.html 什么是token Token是服务端生成的 ...
- requests使用小结(不定期更新)
request是python的第三方库,使用上比urllib和urllib2要更方便. 0x01 使用session发送:能保存一条流中获取的cookie,并自动添加到http头中 s = reque ...
- .net core 删除主表,同时删除子表
前提条件: 代码懒加载, 数据库有外键关联 var entity = context.主表.Include(o => o.子表).FirstOrDefault(p => p.Id == i ...
- C语言进行csv文件数据的读取
C语言进行csv文件数据的读取: #include <stdio.h> #include <string.h> #include <malloc.h> #inclu ...
- 题解 P1717 【钓鱼】
P1717 钓鱼 贪心+堆的方法其他题解已经讲的很清楚了,这里放出萌新简洁的dp做法,如果有正确性问题希望大佬能够指出qwq #include<cstdio> using namespac ...
- socket udp编程的一些积累的记录
接了个小活,要求写udp的客户端,循环接收服务端的固定的指令并显示数据 我设计的逻辑是,用户在界面输入框输入服务器ip.端口,随后udp连接,开启线程循环接收,接收指令,解析成数据,存在结构体的lis ...
- 不会PPT配色没关系,有这些配色网站,也能让你的PPT配色美到极致
很多小伙伴在做PPT的时候,都会被PPT的配色难倒.看到各种非常好看的颜色总是想要将其用在自己的PPT中,可是却发现,颜色和颜色之间完全不搭,自己的PPT也变得丑到不像样. 别担心,今天将分享几个非常 ...