欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何在Flask中實現(xiàn)數(shù)據(jù)分組流程詳解

 更新時間:2023年05月19日 17:13:32   作者:圈圈圈小明  
在Flask中,數(shù)據(jù)分組是指將一組數(shù)據(jù)按照某種方式進行分類,以便更好地對數(shù)據(jù)進行處理和展示,可以使用Python內置的itertools模塊中的groupby方法,或者使用SQL語句中的GROUP?BY子句來實現(xiàn)數(shù)據(jù)分組,這篇文章介紹了在Flask中實現(xiàn)數(shù)據(jù)分組,感興趣的同學可以參考下文

【數(shù)據(jù)庫模型類】

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實現(xiàn)兩個表聯(lián)合查詢,得到Article表的id,photoUrl,fileUrl,ConColumn表的name

按照Article的create_time倒排序,該如何寫查詢?

【循環(huán)展示】

目標:同一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)

【數(shù)據(jù)庫中的數(shù)據(jù):】

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.這個分組查詢中,符合條件的數(shù)據(jù)應該是4條,但是分組之后的數(shù)據(jù)把id=25的數(shù)據(jù)丟失了,不知什么原因。

【回答】

如果沒有在控制臺中看到 SQL 語句,那可能是你的日志級別設置過高了。這種情況下,重新設置日志級別即可,例如:

可以在控制臺中查看 SQL 語句。關于查詢中 id=25 的數(shù)據(jù)丟失的問題,應該是在分組查詢中出了問題。請檢查一下在查詢的時候,是否漏選了某些條件,是否有其他查詢導致該數(shù)據(jù)被過濾了掉等等??梢詫?group_by(ConColumn.name) 語句刪除掉試試看是否能查到 id=25 的數(shù)據(jù),或者將 group_by 語句修改為 group_by(Article.id),以便更好地定位問題。

import logging
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) # 重新設置為 INFO 級別

這樣就可以在控制臺輸出 SQL 語句了。如果仍然無法輸出 SQL 語句,可能是數(shù)據(jù)庫配置方面的問題,你可以查看你使用的數(shù)據(jù)庫的文檔,了解更多日志輸出配置方面的信息。

【前端(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中實現(xiàn)數(shù)據(jù)分組流程詳解的文章就介紹到這了,更多相關Flask實現(xiàn)數(shù)據(jù)分組內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論