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数组的处理代码
Jan 04 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
Python中return语句用法实例分析
Aug 04 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
一篇文章快速了解Python的GIL
Jan 12 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
Python各种扩展名区别点整理
Feb 27 Python
Python工程师必考的6个经典面试题
Jun 28 Python
去除python中的字符串空格的简单方法
Dec 22 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
php中数组最简单的使用方法
2020/12/27 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python功能键的读取方法
2015/05/28 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
python3.6的venv模块使用详解
2018/08/01 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
override和overload的区别
2016/03/09 面试题
机械专业个人求职自荐信格式
2013/09/21 职场文书
个人求职信范文分享
2014/01/06 职场文书
晚会主持词开场白
2014/03/17 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书