一对多就是主键与外键的关系,通过一个用户表,角色表进行举例子

角色表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)

上面的代码就是创建了一个一对多的关系。

最新文章

  1. MySQL 处理重复数据
  2. 说说设计模式~观察者模式(Observer)
  3. I/O复用模型之select学习
  4. spring bean的初始化
  5. [leetode]Binary Search Tree Iterator
  6. php5.3 连接 sqlserver2005
  7. 史上最全的JavaScript工作笔记
  8. IIS7授权错误:“无法验证对路径的访问”的解决方法
  9. 从零开始学习UNITY3D(GUI篇 群组视图控件)
  10. Cent OS & Windows 双系统自定义引导菜单
  11. MySQL 查看执行计划
  12. .net core webapi+vue 跨域访问
  13. EditTex
  14. (十一)T检验-第二部分
  15. 《Effective C++》item25:考虑写出一个不抛异常的swap函数
  16. R语言多元素向量
  17. Git和Github简单教程【转】
  18. box-sizing与calc()与flex
  19. Git介绍及基本操作
  20. 使用JS完成首页定时弹出广告图片

热门文章

  1. PHP 操作oracle数据库,select,insert into ,delete,update等
  2. for语句处理多维数组
  3. 修改链接服务器 Rpc &Rpc Out
  4. Django - 在settings配置终端打印SQL语句
  5. (办公)记事本_linux网络命令
  6. oracle关于sequence的个人理解
  7. pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题
  8. 微软停止支持Windows 7 数百万台电脑将面临病毒等风险
  9. C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,
  10. leetcode菜鸡斗智斗勇系列(8)--- Find N Unique Integers Sum up to Zero