python flask 多对多表查询功能

我们在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

这里呢,我直接先从分类找到这个分类,然后通过第三表来查询属于这个分类的文章、其实呢 这里很简单,可能是我当时自己的脑子短路了吧, 不知道怎么想是对的,现在来看 其实还是那么的简单,只是当时我忽略了什么。    加油,学习前进的路上。

(0)

相关推荐

  • Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程

    使用Flask-SQLAlchemy管理数据库 Flask-SQLAlchemy是一个Flask扩展,它简化了在Flask应用程序中对SQLAlchemy的使用.SQLAlchemy是一个强大的关系数据库框架,支持一些数据库后端.提供高级的ORM和底层访问数据库的本地SQL功能. 和其他扩展一样,通过pip安装Flask-SQLAlchemy: (venv) $ pip install flask-sqlalchemy 在Flask-SQLAlchemy,数据库被指定为URL.表格列出三个最受欢

  • Python的Flask框架使用Redis做数据缓存的配置方法

    Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统.会把数据读入内存中提高存取效率.Redis性能极高能支持超过100K+每秒的读写频率,还支持通知key过期等等特性,所以及其适合做缓存. 下载安装 根据redis中文网使用wget下载压缩包 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz $ tar xzf redis-3.0.5.tar.gz $ cd redis-3.0.5 $ make 二进制文

  • 使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

    表单是让用户与我们的网页应用程序交互的基本元素.Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Flask 应用程序中使用流行的 WTForms 包.这个包使得定义表单和处理提交容易一些. Flask-WTF 我们想要使用 Flask-WTF 做的第一件事情(在安装它以后,GitHub项目页:https://github.com/lepture/flask-wtf )就是在 myapp.forms 包中定义一个表单. # ourapp/forms.py fr

  • Python的Flask框架标配模板引擎Jinja2的使用教程

    Jinja2需要Python2.4以上的版本. 安装 按照Jinja有多种方式,你可以根据需要选择不同的按照方式. 使用easy_install 或pip: #sudo easy_install Jinja2 #sudo pip install Jinja2 这两个工具可以自动从网站上下载Jinja,并安装到python目录的site-packages目录中. 从tar包安装: # 下载Jinja的安装包 # 解压缩 # sudo python setup.py install 基本API用法

  • 在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

    Python基础环境搭建 CENTOS 6.X 系列默认安装的 Python 2.6 ,目前开发中主要是使用 Python 2.7 ,这两个版本之间还是有不少差异的,程序在 Python 2.6 下经常会出问题. 比如: re.sub 函数 ,2.7 支持 flags 参数,而 2.6 却不支持. 所以,打算安装 Python 2.7 来运行 Flask 应用程序,但 2.6 不能删除,因为系统对它有依赖. 1.安装 sqlite-devel 因为 Flask 应用程序可能使用能 Sqlite

  • 深度定制Python的Flask框架开发环境的一些技巧总结

    Flask 环境配置 你的应用程序可能需要大量的软件包才能正常的工作.如果都不需要 Flask 包的话,你有可能读错了教程.当应用程序运行的时候,你的应用程序的 环境 基本上是所有一切事情的根基.我们是幸运的,因为有许多方式使得我们能够轻松地管理我们的环境. 使用 virtualenv 管理你的环境 virtualenv是用于在所谓 虚拟环境 中隔离你的应用程序的一个工具.一个虚拟环境是包含了你的应用依赖的软件的一个目录.一个虚拟环境也能够改变你的环境变量以维持你的开发环境包含的环境变量.不用下

  • 详解Python的Flask框架中生成SECRET_KEY密钥的方法

    引子 如果遇到了 Must provide secret_key to use csrf错误提醒,原因就是没有设置secret_key ,在代码中加上 app.config['SECRET_KEY']='xxx' SECRET_KEY最好不要写在代码中. 最好设置一个config.py文件,从中读取该内容 config.py CSRF_ENABLED = True SECRET_KEY = 'you-will-never-guess' app.py app.config.from_object(

  • Python的Flask框架中的Jinja2模板引擎学习教程

    Flask的模板功能是基于Jinja2模板引擎来实现的.模板文件存放在当前目前下的子目录templates(一定要使用这个名字)下. main.py 代码如下: from flask import Flask, render_template app = Flask(__name__) @app.route('/hello') @app.route('/hello/<name>') def hello(name=None): return render_template('hello.html

  • python flask 多对多表查询功能

    我们在flask的学习中,会难免遇到多对多表的查询,今天我也遇到了这个问题.那么我想了好久.也没有想到一个解决的办法,试了几种方法,可能是思路的限制我放弃了,后来,我就在网上百度,可是发现百度出来的结果和自己想要的还有一定的差距,那么我根据百度上得来的思路,那么我也对我的数据结构进行了探索, 下面来看看我这里怎么来查询的,首先给大家看下我写的数据库的代码的片段,这样,加深理解. post_class=db.Table('post_class', db.Column('post_id',db.In

  • Mybatis基于注解实现多表查询功能

    对应的四种数据库表关系中存在四种关系:一对多,多对应,一对一,多对多.在前文中已经实现了xml配置方式实现表关系的查询,本文记录一下Mybatis怎么通过注解实现多表的查询,算是一个知识的补充. 同样的先介绍一下Demo的情况:存在两个实体类用户类和账户类,用户类可能存在多个账户,即一对多的表关系.每个账户只能属于一个用户,即一对一或者多对一关系.我们最后实现两个方法,第一个实现查询所有用户信息并同时查询出每个用户的账户信息,第二个实现查询所有的账户信息并且同时查询出其所属的用户信息. 1.项目

  • Mongodb实现的关联表查询功能【population方法】

    本文实例讲述了Mongodb实现的关联表查询功能.分享给大家供大家参考,具体如下: Population MongoDB是非关联数据库.但是有时候我们还是想引用其它的文档.这就是population的用武之地. Population是从其它文档替换文档中的特定路径.我们可以迁移一个单一的文件,多个文件,普通对象,多个普通的对象,或从查询中返回的所有对象 populate 方法 populate 方法可以用在 document 上. model 上或者是 query 对象上,这意味着你几乎可以在任

  • Python实现的简单dns查询功能示例

    本文实例讲述了Python实现的简单dns查询功能.分享给大家供大家参考,具体如下: #!/usr/bin/python import sys,socket def print_array(*arr): array = arr for item in array: print item[4][0] print '''this script is for host resolve print "now this begin... if you want to leave,please input

  • MyBatis XML方式的基本用法之多表查询功能的示例代码

    1. 多表查询 在之前,我们示例的2个查询都是单表查询,但实际的业务场景肯定是需要多表查询的,比如现在有个需求: 查询某个用户拥有的所有角色.这个需求要涉及到sys_user,sys_user_role,sys_role三张表,如何实现呢? 首先,在SysUserMapper接口中定义如下方法. /** * 根据用户id获取角色信息 * * @param userId * @return */ List<SysRole> selectRolesByUserId(Long userId); 然后

  • 一文搞懂Python中pandas透视表pivot_table功能详解

    目录 一.概述 1.1 什么是透视表? 1.2 为什么要使用pivot_table? 二.如何使用pivot_table 2.1 读取数据 2.2Index 2.3Values 2.4Aggfunc 2.5Columns 一文看懂pandas的透视表pivot_table 一.概述 1.1 什么是透视表? 透视表是一种可以对数据动态排布并且分类汇总的表格格式.或许大多数人都在Excel使用过数据透视表,也体会到它的强大功能,而在pandas中它被称作pivot_table. 1.2 为什么要使用

  • 一文搞懂Python中pandas透视表pivot_table功能

    目录 一.概述 1.1 什么是透视表? 1.2 为什么要使用pivot_table? 二.如何使用pivot_table 2.1 读取数据 2.2Index 2.3Values 2.4Aggfunc 2.5Columns 一文看懂pandas的透视表pivot_table 一.概述 1.1 什么是透视表? 透视表是一种可以对数据动态排布并且分类汇总的表格格式.或许大多数人都在Excel使用过数据透视表,也体会到它的强大功能,而在pandas中它被称作pivot_table. 1.2 为什么要使用

  • SpringBoot进行多表查询功能的实现

    实体类: Emp 类: @Data @NoArgsConstructor @AllArgsConstructor public class Emp { private int id; private String lastname; private String email; private int gender; private int did; private Dept dept; private Date birth = new Date(); } Dept类: @Data @AllArg

  • 利用 SpringBoot 在 ES 中实现类似连表查询功能

    目录 一.摘要 二.项目实践 2.1添加依赖 2.2配置 es 客户端 2.3初始化索引结构 2.4向 es 中同步文档数据 2.5内嵌对象查询 三.小结 一.摘要 在上篇文章中,我们详细的介绍了如何在 ES 中精准的实现嵌套json对象查询? 那么问题来了,我们如何在后端通过技术方式快速的实现 es 中内嵌对象的数据查询呢? 为了方便更容易掌握技术,本文主要以上篇文章中介绍的通过商品找订单为案例,利用 SpringBoot 整合 ES 实现这个业务需求,向大家介绍具体的技术实践方案,存入es中

  • Python Flask基础教程示例代码

    本文研究的主要是Python Flask基础教程,具体介绍如下. 安装:pip install flask即可 一个简单的Flask from flask import Flask #导入Flask app = Flask(__name__) #创建一个Flask实例 #设置路由,即url @app.route('/') #url对应的函数 def hello_world(): #返回的页面 return 'Hello World!' #这个不是作为模块导入的时候运行,比如这个文件为aa.py,

随机推荐