如何在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)
......
# 和文章的關(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實現(xiàn)兩個表聯(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()
)對應(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) # 將日志級別設(shè)置為 debug
【問題】
1.設(shè)置日志級別的語句是放在這里嗎?然后在哪里查看日志
2.這個分組查詢中,符合條件的數(shù)據(jù)應(yīng)該是4條,但是分組之后的數(shù)據(jù)把id=25的數(shù)據(jù)丟失了,不知什么原因。
【回答】
如果沒有在控制臺中看到 SQL 語句,那可能是你的日志級別設(shè)置過高了。這種情況下,重新設(shè)置日志級別即可,例如:
可以在控制臺中查看 SQL 語句。關(guān)于查詢中 id=25 的數(shù)據(jù)丟失的問題,應(yīng)該是在分組查詢中出了問題。請檢查一下在查詢的時候,是否漏選了某些條件,是否有其他查詢導(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 級別這樣就可以在控制臺輸出 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中實現(xiàn)數(shù)據(jù)分組流程詳解的文章就介紹到這了,更多相關(guān)Flask實現(xiàn)數(shù)據(jù)分組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例詳解
數(shù)據(jù)清洗是指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識別的錯誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無效值和缺失值等,數(shù)據(jù)清洗與處理的目的是提高數(shù)據(jù)的質(zhì)量,提高實驗結(jié)果的可靠度,本文給大家介紹了python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例,需要的朋友可以參考下2024-08-08
Python?time模塊之時間戳與結(jié)構(gòu)化時間的使用
這篇文章主要為大家詳細(xì)介紹了Python中的time模塊以及如何利用time模塊實現(xiàn)時間戳與結(jié)構(gòu)化時間,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-06-06
pycharm2023.1配置python解釋器時找不到conda環(huán)境解決辦法
如果你已經(jīng)安裝了Anaconda或Miniconda,但是在PyCharm中找不到conda解釋器,可以試試本文介紹的方法,這篇文章主要給大家介紹了關(guān)于pycharm2023.1配置python解釋器時找不到conda環(huán)境的解決辦法,需要的朋友可以參考下2023-12-12
pytest自動化測試中的fixture的聲明和調(diào)用
這篇文章主要為大家介紹了pytest自動化測試中的fixture的聲明和調(diào)用,文中含有詳細(xì)示例操作有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10
Django中日期處理注意事項與自定義時間格式轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Django中日期處理注意事項與自定義時間格式轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
python實現(xiàn)字符串和日期相互轉(zhuǎn)換的方法
這篇文章主要介紹了python實現(xiàn)字符串和日期相互轉(zhuǎn)換的方法,涉及Python中time和datetime函數(shù)使用技巧,需要的朋友可以參考下2015-05-05

