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 Queue模块详解
Nov 30 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
使用Python处理BAM的方法
Sep 28 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
Python二元赋值实用技巧解析
Oct 25 Python
如何定义TensorFlow输入节点
Jan 23 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
Python基于pandas爬取网页表格数据
May 11 Python
jupyter notebook的安装与使用详解
May 18 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
php 删除cookie和浏览器重定向
2009/03/16 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
企业宣传方案
2014/03/04 职场文书
企业宣传策划方案
2014/05/29 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
三孔导游词
2015/02/05 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js