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 ...
随机推荐
- linux安装、使用优化、常用软件
定制自己的ubuntu桌面系统 一.安装ubuntu 1.下载ubuntu镜像Iso文件 ubuntu官网下载:https://cn.ubuntu.com/download 2.u盘写入 (1)下载U ...
- 排序:ORDER BY
1.按照字段值进行排序: 语法:order by 字段 升序|降序 (asc|desc) 默认情况下为“升序” asc.asc=ascending 升 desc=descending 降 2.允许多字 ...
- 【C语言】将两个字符串连接起来
#include<stdio.h> int main() { ] = "I "; ] = "am a student"; int i, j, n; ...
- Centos6.10-FastDFS-Tracker-Nginx示例配置
nginx 安装过程<详见> 1.进入工作目录 cd /usr/local/nginx/conf 2.创建子目录 mkdir configs 3.创建storage代理配置 cd conf ...
- net core调用MimeKit发送QQ邮件
一.在QQ邮箱内申请授权码,具体参考请官方文档 二.具体代码 public void TestSendMailDemo() { MimeMessage message = new MimeMessag ...
- AttributeError: This QueryDict instance is immutable
当写添加注册后端时,运行当运行时,会出现: "AttributeError: This QueryDict instance is immutable": 因为默认的 QueryD ...
- 安卓基础(AndroidViewModel)
今天学习了AndroidViewModel,但是我根据视频上讲解,根据所讲用例,在添加依赖得时候一直报错,后来我请教大佬,他告诉我说是,因为网络得问题,国外得一些依赖有可能下不下来,所以可以下载阿里云 ...
- Ubuntu 16 安装Nginx+Php+Mysql
嗯哼,结束外派,我胡汉三又回来了,回来第一件事,就是重新装服务器,搭环境,以前用的apache,最近改了nginx,来吧,从头开始 因为以前一直用apache,这次换一个nginx试试. 1.更新系统 ...
- 克隆虚拟机后ip配置
(1)出错原因: 错误:No suitable device found: no device found for connection "System eth0" 原因:克隆虚拟 ...
- windows centos php-beast 安装
https://github.com/imaben/php-beast-binaries windows下 可以直接在这里下载dll 根据自己的php版本 还有是不是线程安全的 来选择下载对应的 放 ...