第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

求一段Flask(SQLAlchemy)的代碼優(yōu)化,關(guān)于在一個(gè)循環(huán)里重復(fù)select的 .

求一段Flask(SQLAlchemy)的代碼優(yōu)化,關(guān)于在一個(gè)循環(huán)里重復(fù)select的 .

開滿天機(jī) 2019-04-06 08:31:56
#計(jì)算7天內(nèi)銷量,并把每件商品的不同尺碼庫存分別顯示day7=today-datetime.timedelta(days=7)logs7=db.session.execute("SELECTproduct_name,goods_id,sum(number)assellsumFROMsdb_sell_logswherecreatetime>:createtimegroupbygoods_idorderbysum(number)desclimit0,20",{"createtime":datetime_timestamp(day7.strftime("%Y-%m-%d00:00:00"))}).fetchall()goods_store7={}foriteminlogs7:store=db.session.execute("SELECTpdt_desc,storefromsdb_productswheregoods_id=:goods_id",{"goods_id":item.goods_id}).fetchall()item_store=[]forstore_iteminstore:item_store.append([store_item.pdt_desc,store_item.store])goods_store7[item.goods_id]=item_store這段代碼要怎么優(yōu)化請(qǐng)問?感覺這個(gè)foriteminlogs7:的循環(huán)里要處理N次的select效率好低下。
查看完整描述

2 回答

?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

相比程序里面的數(shù)據(jù)結(jié)構(gòu)操作,數(shù)據(jù)庫操作永遠(yuǎn)是heavy的如果你的內(nèi)存足夠大,那么可以考慮將7天的rawdata全部select到內(nèi)存里,然后做各種操作.在內(nèi)存不夠的時(shí)候(比如現(xiàn)在的情況改成6個(gè)月),你可以將數(shù)據(jù)分批輸出(SELECTLIMIT),在內(nèi)存里建立好表的模型,進(jìn)行累加的處理(比如讀到一條記錄是紅色裙子,某月某日出售),就是哪天的紅裙子數(shù)量++
(這時(shí)候充分利用python的字典結(jié)構(gòu)吧,千萬別去定義class)總之,不要使用數(shù)據(jù)庫來計(jì)算,而是使用代碼在內(nèi)存中計(jì)算.另外,在架構(gòu)構(gòu)中,這些數(shù)據(jù)往往不需要在網(wǎng)頁中計(jì)算,你可以將這個(gè)程序做成一個(gè)定時(shí)的任務(wù),過去7天的報(bào)表,每天跑一次或者每周跑一次,然后直接生成一個(gè)html文件,甚至結(jié)果直接email出去,看需求了.
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-06
  • 2 回答
  • 0 關(guān)注
  • 365 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)