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求pi的方法
Oct 08 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
python获取交互式ssh shell的方法
Feb 14 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
Python中Selenium库使用教程详解
Jul 23 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
python boto和boto3操作bucket的示例
Oct 30 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 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
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
php 保留字列表
2012/10/04 PHP
php通过session防url攻击方法
2014/12/10 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python 串口读写的实现方法
2019/06/12 Python
使用pip安装python库的多种方式
2019/07/31 Python
Python如何访问字符串中的值
2020/02/09 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
安全生产目标责任书
2014/04/14 职场文书
超市商业计划书
2014/05/04 职场文书
欢度春节标语
2014/07/01 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏