python flask 多对多表查询功能


Posted in Python onJune 25, 2017

我们在flask的学习中,会难免遇到多对多表的查询,今天我也遇到了这个问题。那么我想了好久。也没有想到一个解决的办法,试了几种方法,可能是思路的限制我放弃了,后来,我就在网上百度,可是发现百度出来的结果和自己想要的还有一定的差距,那么我根据百度上得来的思路,那么我也对我的数据结构进行了探索, 下面来看看我这里怎么来查询的,首先给大家看下我写的数据库的代码的片段,这样,加深理解。

post_class=db.Table('post_class',
  db.Column('post_id',db.Integer(),db.ForeignKey('posts.id')),
  db.Column('classifa_id',db.Integer(),db.ForeignKey('fenlei.id')))
class Post(db.Model):#文章表
  __tablename__='posts'
  id=db.Column(db.Integer,primary_key=True,autoincrement=True)
  title=db.Column(db.String(255),unique=True)
  text=db.Column(db.Text())
  publish_date=db.Column(db.DateTime,default=datetime.datetime.now())
  user_id=db.Column(db.Integer,db.ForeignKey('users.id'))
  is_recomment=db.Column(db.Boolean,default=False)
  comments = db.relationship(
    'Comment',
    backref='posts',
    lazy='dynamic')
  tag = db.relationship(
    'Tag',
    secondary=posts_tags,
    backref=db.backref('posts', lazy='dynamic')
  )
  classname=db.relationship('Classifa',
    secondary=post_class,
    backref=db.backref('posts'))
  def __repr__(self):
    return "<Model Post `{}`>".format(self.title)
class Classifa(db.Model):#分类
  __tablename__='fenlei'
  id=db.Column(db.Integer(),primary_key=True)
  name=db.Column(db.String(64))
  def __repr__(self):
    return self.name

这里有三张表,一张呢是文章的列表,另一张呢,是分类表,我们来想下,一篇文章可能同时属于多个分类,那么一个分类可能也属于多个文章,这么来说想必我们大家都能理解这个逻辑,那么呢,我第三表来显示多对多关系的,那么我们接下来怎么去查询呢,其实我现在的需求就是我要找个一个分类下面所有的文章吧,

下面来看看我的代码

data=Classifa.query.filter_by(name='数据库').first()
 data_post=data.posts

这里呢,我直接先从分类找到这个分类,然后通过第三表来查询属于这个分类的文章、其实呢 这里很简单,可能是我当时自己的脑子短路了吧, 不知道怎么想是对的,现在来看 其实还是那么的简单,只是当时我忽略了什么。    加油,学习前进的路上。

Python 相关文章推荐
python实现数值积分的Simpson方法实例分析
Jun 05 Python
Python如何为图片添加水印
Nov 25 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Python selenium自动化测试模型图解
Apr 15 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
Matplotlib绘制混淆矩阵的实现
May 27 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
python缺失值的解决方法总结
Jun 09 Python
Python的语言类型(详解)
Jun 24 #Python
Python队列的定义与使用方法示例
Jun 24 #Python
Python实现字符串逆序输出功能示例
Jun 24 #Python
Python正则表达式分组概念与用法详解
Jun 24 #Python
Python正则表达式常用函数总结
Jun 24 #Python
Python实现好友全头像的拼接实例(推荐)
Jun 24 #Python
Python实现的爬虫功能代码
Jun 24 #Python
You might like
一个改进的UBB类
2006/10/09 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
pyenv命令管理多个Python版本
2017/03/26 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
测试驱动开发的主要步骤是什么
2014/12/10 面试题
超市采购员岗位职责
2014/02/01 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
护士自荐信范文
2015/03/25 职场文书
慈善募捐倡议书
2015/04/27 职场文书
大队委员竞选稿
2015/11/20 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技