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的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
Python实现时间序列可视化的方法
Aug 06 Python
django框架auth模块用法实例详解
Dec 10 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
pandas处理csv文件的方法步骤
Oct 16 Python
python非标准时间的转换
Jul 25 Python
如何利用python实现列表嵌套字典取值
Jun 10 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
js分页工具实例
2015/01/28 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
keras K.function获取某层的输出操作
2020/06/29 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
家长会主持词开场白
2014/03/18 职场文书
新年爱情寄语
2014/04/08 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis