您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 |

自学教程:如何在Flask中实现数据分组流程详解

51自学网 2023-06-16 18:56:21
  python
这篇教程如何在Flask中实现数据分组流程详解写得很实用,希望能帮到您。

【数据库模型类】

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 logginglogging.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>

到此这篇关于如何在Flask中实现数据分组流程详解的文章就介绍到这了,更多相关Flask实现数据分组内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


使用&nbsp;Python&nbsp;查找本月的最后一天的方法汇总
python-pymysql如何实现更新mysql表中任意字段数据
51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1