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的Django框架中模板碎片缓存简介
Jul 24 Python
python万年历实现代码 含运行结果
May 20 Python
python实现抖音视频批量下载
Jun 20 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
python实现邮件发送功能
Aug 10 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
浅谈Python爬虫原理与数据抓取
Jul 21 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
封装一个PDO数据库操作类代码
2009/09/09 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
js查错流程归纳
2012/05/04 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
小程序中英文混合排序问题解决
2019/08/02 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
Windows下PyMongo下载及安装教程
2015/04/27 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
关于人生的感言
2014/01/17 职场文书
2015年领班工作总结
2015/04/29 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技