色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

python實現一次性封裝多條sql語句(begin end)

瀏覽:86日期:2022-07-22 13:56:52

python封裝利用begin end執行多條sql

因為業務需求,優化模型運行時間。考慮到sql語句每一次執行都要建立連接,查詢,獲取數據耗時過多。就想到將sql一起提交上去運行,能夠節省很多時間。原本1.6-2.5秒耗時的sql語句經過修改后時間降到0.3-0.6秒,感覺性能提升挺好的。

當然還有一種想法,如果有python框架的orm可能會更快,相比來說耗時基本看不到了吧,這只是我的猜想,僅僅為了優化一個模型寫一個框架的話 代碼可能需要改的比較多,自我感覺付出和收獲不一定會成正比,當然以后有時間可以試試。

這次優化基本代碼邏輯沒有動,利用了begin end進行sql整合。

公司用的是oracle,之前沒用過但是感覺和mysql基本類似,如果是mysql的話該方法也可用

sql_str = ‘beginn’sql_str += ‘這里時需要執行的sql語句’sql_str += ‘ncommit;end;’

中間sql有多少條無所謂,看了一下運行時間感覺 我的一千行sql耗時 幾乎就是這一千行里面耗時最長那個時間。是異步完成還是什么這個就不是很清楚了,主要是一次建立連接,省去網絡傳輸數據和請求數據庫的過程

網上好多begin end都是在可視化工具中的sql執行的,并不能在command中執行,這就意味中我們代碼中封裝的語句沒有卵用,還好沒放棄當時就研究了一下找到了解決辦法

在end 提交一下就ok了,如果在command中運行一直未結束的話加一個 / 斜線就ok了

本次內容就此結束,下面是一些題外話。

在說一個其中遇到的問題吧,在進行sql封裝后,其中很多表都很亂,約束很亂 而且邏輯并不嚴謹,但是模型正在運行還不讓動 那只能按照這個規則來了

ORA 00001 違反唯一約束條件 其中出現了這個問題,意思就是唯一約束重復了,因為模型輸入問題,處理出來的結果之前可能剛插入到數據庫中(也就是 上面的sql_str 出現了兩天相同的insert),這個東西很簡單,加一個set判斷一下就行,但是到這之后,一個bug就跳出來了,這個腳本計算的是因子重要度,結果預測可能每次都不相同,有些數據很小的可能就當成0扔進去了,所以我需要做的是將 相同數據的情況下插入較為重要的因子重要度(也無需要 ),這樣的話簡簡單單的set就不行了,但是也不難 用來一下字典

importance_map = {} 實現創建好字典 if feature in importance_map:if importance_map[feature] < importance: sql_str +=‘***************‘’’ 這里就是insert語句了else: continue else:importance_map[feature] = importance

其實這個東西也沒有什么難點,但是做到這之后就有很多想法折射出來。

數據處理原本也可以用pandas進行,但是pandas是對所有數據進行操作,我一個set只對重復數據進行操作,切pandas內存消耗極為嚴重,前兩天寫的特征工程內存炸裂。表數據用完后內存并沒有得到釋放,這里面就涉及到python的垃圾回收,用法至今沒有搞懂,還需要研究研究,gc是對循環引用進行垃圾回收,內存釋放。但是這個pandas并不是循環引用,我認為是在存儲在緩存區中,位置占死了,就很煩

模型畢竟是在服務器上面跑,盡量快切省內存,不然你把內存占了 別人的項目怎么玩。所以就用這種方法。

很少寫博客,主要是記錄一下問題以后 再出現了好應對。當然如果能夠幫助正在修復bug中的你,也是樂意至極。那塊說的有問題或者解釋不清楚,可以留言。

補充知識:postgreSQL sql使用 %s時務必加引號,即為‘%s’,否則報錯

postgre sql使用 %s時務必加引號,即為‘%s’,否則報錯

if name == ‘main’:

t='TDD-LTE_MRO'sql='select * from lastftp where enbid = %d and keytype = %s'%(110001,t)print(selectOperate(sql))

結果:

Traceback (most recent call last):File “/home/eyann/mypython/t1/pgSQLoperate.py”, line 84, inprint(selectOperate(sql))File “/home/eyann/mypython/t1/pgSQLoperate.py”, line 45, in selectOperatecursor.execute(sql)psycopg2.ProgrammingError: column “tdd” does not existLINE 1: …* from lastftp where enbid = 110001 and keytype = TDD-LTE_MR…^

if name == ‘main’:

t='TDD-LTE_MRO'sql='select * from lastftp where enbid = %d and keytype = ’%s’'%(110001,t)print(selectOperate(sql))

結果:

[(‘test3’, ‘TDD-LTE_MRO’, ‘0114123000’, ‘0012’, 110001)][Finished in 0.1s]

以上這篇python實現一次性封裝多條sql語句(begin end)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美日韩一级片在线观看 | www.久草| 亚洲精品中文字幕在线 | 国产a免费观看 | 国产亚洲精品片a77777 | 成人免费一区二区三区视频软件 | 国产日韩精品在线 | 日韩a级一片 | 久草在线观看资源 | 日韩高清欧美 | 久久九九精品视频 | 一级欧美一级日韩毛片99 | 久久精品中文字幕第一页 | 成人国产视频在线观看 | 亚洲国产视频网 | 日韩视频一区二区三区 | 国产精品日本欧美一区二区 | 国产 magnet| 亚洲成a人一区二区三区 | 91成人在线视频 | 成人免费大片黄在线观看com | 一级片免费网址 | 美女福利视频国产片 | 国产精品看片 | 亚洲欧美极品 | 欧美日韩午夜视频 | 日韩在线视频线视频免费网站 | 午夜国产 | 超清国产粉嫩456在线免播放 | 美国特级毛片 | 波多野结衣在线播放视频 | 久久成人免费播放网站 | 欧美一级级a在线观看 | 亚洲影院手机版777点击进入影院 | 色噜噜狠狠大色综合 | 亚洲一区二区三区精品国产 | 在线成人精品国产区免费 | 亚洲美女性视频 | 2021一本久道 | 国产va精品网站精品网站精品 | julia中文字幕久久亚洲 |