3.ORM框架一对多的关系及使用
2024-09-05 03:28:50
一对多就是主键与外键的关系,通过一个用户表,角色表进行举例子
角色表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)
上面的代码就是创建了一个一对多的关系。
最新文章
- MySQL 处理重复数据
- 说说设计模式~观察者模式(Observer)
- I/O复用模型之select学习
- spring bean的初始化
- [leetode]Binary Search Tree Iterator
- php5.3 连接 sqlserver2005
- 史上最全的JavaScript工作笔记
- IIS7授权错误:“无法验证对路径的访问”的解决方法
- 从零开始学习UNITY3D(GUI篇 群组视图控件)
- Cent OS &; Windows 双系统自定义引导菜单
- MySQL 查看执行计划
- .net core webapi+vue 跨域访问
- EditTex
- (十一)T检验-第二部分
- 《Effective C++》item25:考虑写出一个不抛异常的swap函数
- R语言多元素向量
- Git和Github简单教程【转】
- box-sizing与calc()与flex
- Git介绍及基本操作
- 使用JS完成首页定时弹出广告图片
热门文章
- PHP 操作oracle数据库,select,insert into ,delete,update等
- for语句处理多维数组
- 修改链接服务器 Rpc &;Rpc Out
- Django - 在settings配置终端打印SQL语句
- (办公)记事本_linux网络命令
- oracle关于sequence的个人理解
- pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题
- 微软停止支持Windows 7 数百万台电脑将面临病毒等风险
- C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,
- leetcode菜鸡斗智斗勇系列(8)--- Find N Unique Integers Sum up to Zero