如何在Flask中实现数据分组流程详解

作者:圈圈圈小明 时间:2021-11-15 06:53:59 

【数据库模型类】

class ConColumn(db.Model):
   __tablename__='content_column'
   id = db.Column(db.Integer, primary_key=True)
   name = db.Column(db.String(50), nullable=False)
   pid = db.Column(db.Integer)
   parent_name = db.Column(db.String(50), nullable=False)
   ......
   # 和文章的关系
   articles = db.relationship('Article', backref="content_article")
class Article(db.Model):
   __tablename__ = 'content_article'
   id = db.Column(db.Integer, primary_key=True)
   #columnId = db.Column(db.String(11), nullable=False)
   photoUrl = db.Column(db.String(300))
   fileUrl = db.Column(db.String(300))
   create_time = db.Column(db.DateTime, default=datetime.now)
   ......
   # 外键
   columnId = db.Column(db.Integer, db.ForeignKey("content_column.id"), nullable=False)

想要在flask实现两个表联合查询,得到Article表的id,photoUrl,fileUrl,ConColumn表的name

按照Article的create_time倒排序,该如何写查询?

【循环展示】

目标:同一ConColumn的表的相同的name放在一行显示

2021(ConColumn表的name)

图片1(地址是photoUrl) 图片2(地址是photoUrl) 图片3(地址是photoUrl)

2020(ConColumn表的name)

图片1(地址是photoUrl) 图片2(地址是photoUrl) 图片3(地址是photoUrl)

2016(ConColumn表的name)

图片1(地址是photoUrl) 图片2(地址是photoUrl) 图片3(地址是photoUrl)

【数据库中的数据:】

22 11 学而思 0 ... ...

23 15 TSM 0 ... ...

24 16 CATL 0 ... ...

25 16 锦浪 0 ... ...

字段的顺序依次是id,columnId,title,detail,is_top,photoUrl,fileUrl

class Article(db.Model):
   __tablename__ = 'content_article'
   id = db.Column(db.Integer, primary_key=True)
   ...
   columnId = db.Column(db.Integer, db.ForeignKey("content_column.id"), nullable=False)
 def findArticleGroup(self, column_id):
       children_ids = [11, 12, 13, 14, 15, 16, 17]
       articles = (
           Article.query.join(ConColumn, Article.columnId == ConColumn.id)
           .filter(Article.columnId.in_(children_ids), Article.is_top == 0)
           .with_entities(Article.id,Article.photoUrl, Article.fileUrl, ConColumn.name)
           #.group_by(ConColumn.name)
           .order_by(Article.create_time.desc())
           .all()
       )

对应的sql

SELECT content_article.id AS content_article_id, content_article.`photoUrl` AS `content_article_photoUrl`, content_article.`fileUrl` AS `content_article_fileUrl`, content_column.name AS content_column_name
FROM content_article INNER JOIN content_column ON content_article.`columnId` = content_column.id
WHERE content_article.`columnId` IN (11,12,13,14,15,16,17) AND content_article.is_top = 0
ORDER BY content_article.create_time DESC

logging.getLogger('sqlalchemy.engine').setLevel(logging.DEBUG) # 将日志级别设置为 debug

【问题】

1.设置日志级别的语句是放在这里吗?然后在哪里查看日志

2.这个分组查询中,符合条件的数据应该是4条,但是分组之后的数据把id=25的数据丢失了,不知什么原因。

【回答】

如果没有在控制台中看到 SQL 语句,那可能是你的日志级别设置过高了。这种情况下,重新设置日志级别即可,例如:

可以在控制台中查看 SQL 语句。关于查询中 id=25 的数据丢失的问题,应该是在分组查询中出了问题。请检查一下在查询的时候,是否漏选了某些条件,是否有其他查询导致该数据被过滤了掉等等。可以将 group_by(ConColumn.name) 语句删除掉试试看是否能查到 id=25 的数据,或者将 group_by 语句修改为 group_by(Article.id),以便更好地定位问题。

import logging
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) # 重新设置为 INFO 级别

这样就可以在控制台输出 SQL 语句了。如果仍然无法输出 SQL 语句,可能是数据库配置方面的问题,你可以查看你使用的数据库的文档,了解更多日志输出配置方面的信息。

【前端(vue)】

<div v-for="(item, index) in tableData" :key="index">
     <div class="MasonryList-title">{{ item.parentName }}</div>
     <div class="wrapper">
       <div v-for="(file, index) in item.files" :key="index">
         <div class="child">
           <img
             class="imgStyle"
             :src="file.categorieIcon"
             @click="getNewsDetail(file.fileUrl)"
           />
         </div>
       </div>
     </div>

来源:https://blog.csdn.net/wenxi2367/article/details/130532818

标签:Flask,数据,分组
0
投稿

猜你喜欢

  • python 图片去噪的方法示例

    2021-12-10 19:42:25
  • PHP实现的登录,注册及密码修改功能分析

    2023-11-14 21:45:29
  • 通过按钮实时切换CSS样式 实现CSS换肤的实例

    2008-07-17 12:55:00
  • Python数据结构与算法中的栈详解(3)

    2022-01-19 14:38:24
  • JSP request.setAttribute()详解及实例

    2023-06-18 23:59:32
  • 网站的新趋势

    2008-12-11 13:36:00
  • SQL Server 2008数据挖掘查询任务

    2009-03-16 16:50:00
  • ASP实现类似Java中的Linked HashMap类

    2010-04-03 20:49:00
  • Python二叉树的镜像转换实现方法示例

    2023-09-28 18:36:35
  • Oracle临时表空间删除和重建实现过程

    2023-07-18 09:26:04
  • django中模板继承与ModelForm实例详解

    2021-09-05 18:52:10
  • 解决SQL Server日志文件损坏严重的问题

    2009-02-05 15:55:00
  • MS Server和Oracle中对NULL处理的一些细节差异

    2009-06-10 17:35:00
  • Python OpenCV 针对图像细节的不同操作技巧

    2021-08-13 01:29:22
  • python冒泡排序算法的实现代码

    2021-09-08 03:48:27
  • 详解Python中的type和object

    2021-03-25 13:00:58
  • php引用传值实例详解学习

    2023-11-15 06:11:30
  • 将字典转换为DataFrame并进行频次统计的方法

    2023-11-21 05:37:30
  • 不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题

    2023-09-11 00:33:45
  • ecshop百度编辑器远程下载无后缀的图片,并且加水印

    2023-08-14 17:31:41
  • asp之家 网络编程 m.aspxhome.com