如何在Flask中實(shí)現(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) ...... # 和文章的關(guān)系 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實(shí)現(xiàn)兩個(gè)表聯(lián)合查詢,得到Article表的id,photoUrl,fileUrl,ConColumn表的name
按照Article的create_time倒排序,該如何寫查詢?
【循環(huán)展示】
目標(biāo):同一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 學(xué)而思 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() )
對(duì)應(yīng)的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) # 將日志級(jí)別設(shè)置為 debug
【問題】
1.設(shè)置日志級(jí)別的語句是放在這里嗎?然后在哪里查看日志
2.這個(gè)分組查詢中,符合條件的數(shù)據(jù)應(yīng)該是4條,但是分組之后的數(shù)據(jù)把id=25的數(shù)據(jù)丟失了,不知什么原因。
【回答】
如果沒有在控制臺(tái)中看到 SQL 語句,那可能是你的日志級(jí)別設(shè)置過高了。這種情況下,重新設(shè)置日志級(jí)別即可,例如:
可以在控制臺(tái)中查看 SQL 語句。關(guān)于查詢中 id=25 的數(shù)據(jù)丟失的問題,應(yīng)該是在分組查詢中出了問題。請(qǐng)檢查一下在查詢的時(shí)候,是否漏選了某些條件,是否有其他查詢導(dǎo)致該數(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) # 重新設(shè)置為 INFO 級(jí)別
這樣就可以在控制臺(tái)輸出 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>
到此這篇關(guān)于如何在Flask中實(shí)現(xiàn)數(shù)據(jù)分組流程詳解的文章就介紹到這了,更多相關(guān)Flask實(shí)現(xiàn)數(shù)據(jù)分組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)CAN報(bào)文轉(zhuǎn)換工具教程
這篇文章主要介紹了Python實(shí)現(xiàn)CAN報(bào)文轉(zhuǎn)換工具教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容
Python有一個(gè)第三方模塊叫?prettytable,專門用來將數(shù)據(jù)格式輸出。本文將通過示例為大家詳細(xì)講講prettytable的用法,感興趣的可以了解一下2022-07-07Django框架實(shí)現(xiàn)的簡(jiǎn)單分頁功能示例
這篇文章主要介紹了Django框架實(shí)現(xiàn)的簡(jiǎn)單分頁功能,在之前一篇留言板之上增加了簡(jiǎn)單分頁功能,涉及Paginator模塊的簡(jiǎn)單使用技巧,需要的朋友可以參考下2018-12-12jupyter notebook 添加kernel permission denied的操作
這篇文章主要介紹了jupyter notebook 添加kernel permission denied的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Django 多表關(guān)聯(lián) 存儲(chǔ) 使用方法詳解 ManyToManyField save
今天小編就為大家分享一篇Django 多表關(guān)聯(lián) 存儲(chǔ) 使用方法詳解 ManyToManyField save,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08用python實(shí)現(xiàn)詞云效果實(shí)例介紹
大家好,本篇文章主要講的是用python實(shí)現(xiàn)詞云效果實(shí)例介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Python實(shí)現(xiàn)Matplotlib,Seaborn動(dòng)態(tài)數(shù)據(jù)圖的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何讓Matplotlib、Seaborn的靜態(tài)數(shù)據(jù)圖動(dòng)起來,變得栩栩如生。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-05-05python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步
這篇文章主要給大家詳細(xì)介紹了python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步,文中有詳細(xì)的代碼示例和圖文介紹,具有一定的參考價(jià)值,需要的朋友可以參考下2023-09-09