Python列表生成式應(yīng)用方式
列表生成式的線上運用
建議先看Python列表生成式和字典生成式,再來看這篇。
select語句的優(yōu)化方式
In [1]: import MySQLdb as mysql In [2]: conn=mysql.connect(user='root',host='127.0.0.1',passwd='123456',db='lyz',charset='utf8') In [3]: conn.autocommit(True) In [4]: cur = conn.cursor() In [5]: info = ['id','name','name_cn','email','mobile'] In [6]: sql = 'select %s from users'%','.join(info) In [7]: sql Out[7]: 'select id,name,name_cn,email,mobile from users' In [8]: cur.execute(sql) Out[8]: 2L In [9]: res = cur.fetchall() # fetchall()獲得的是個嵌套的元組 In [10]: res Out[10]: ((1L, u'liuyongzhan', u'\u5218\u6c38\u6808', u'1665439369@qq.com', u'2147483647'), (6L, u'lyz', u'1111', u'1111', u'1111'))
高級用法:
把嵌套元組變成一個列表,列表里嵌套字典
In [11]: ha = [dict((k,row[i]) for i,k in enumerate(info)) for row in res]
In [12]: ha
Out[12]:
[{'email': u'1665439369@qq.com',
'id': 1L,
'mobile': u'2147483647',
'name': u'liuyongzhan',
'name_cn': u'\u5218\u6c38\u6808'},
{'email': u'1111',
'id': 6L,
'mobile': u'1111',
'name': u'lyz',
'name_cn': u'1111'}]insert語句的優(yōu)化方式
高大上寫法:
data = dict(request.form) # 或者前端直接以json格式傳過來,就可以寫成data=request.get_json()
ZiChan = ['hostname','cpu','mem','exdate','author','note']
sql='insert into zichan (%s) values (%s)'%(','.join(ZiChan),','.join(['"%s"'%data[x][0] for x in ZiChan]))也可以這樣:
data = {'name':'lyz','age':26,'mobile':15768216871,'email':'1665439369@qq.com'}
key,values = [],[]
for k,v in data.items():
key.append(k)
values.append('"%s"'%v)
sql = 'insert into users (%s) values (%s)'%(','.join(key),','.join(values))
執(zhí)行結(jié)果:
'insert into users (mobile,age,name,email) values ("15768216871","26","lyz","1665439369@qq.com")'update語句的優(yōu)化方式
一般寫法:
ida = request.form.get('id')
hostname = request.form.get('hostname')
cpu = request.form.get('cpu')
mem = request.form.get('mem')
exdate = request.form.get('exdate')
author = request.form.get('author')
note = request.form.get('note')
sql = 'update zichan set hostname ="%s",cpu ="%s",mem ="%s",exdate ="%s",author ="%s",note ="%s" where id=%s'%(hostname,cpu,mem,exdate,author,note,ida)高大上寫法:
方法1:
data = dict(request.form)
ida = data.get('id',None)[0]
ZiChan = ['hostname','cpu','mem','exdate','author','note']
arr = ["%s='%s'" %(k,data[k][0]) for k in ZiChan]
sql = 'update zichan set %s where id=%s'%(','.join(arr),ida)方法2:方法2這種寫法是最優(yōu)的,那么前端傳什么字段過來,就更新對應(yīng)字段。字段就不會寫死了。
方法1主要是前端jquery傳過來的數(shù)據(jù)沒優(yōu)化好,如果前端以json格式傳過來,而且里邊包含一個id的key和一個data的key,id就只對應(yīng)一個id,而data的value是一個字典,字典里用每個資產(chǎn)信息字段作為key,就可以用以下方法:
data = request.get_json()
ida = data.get('id',None)
data = data.get('data',None)
arr = ["%s='%s'"%(k,data[k] for k in data)] # 結(jié)果為:["'hostname‘='xxx‘","'cpu‘='xxx‘",......]
sql = 'update zichan set %s where id=%s'%(','.join(arr),ida)總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python異步編程中asyncio.gather的并發(fā)控制詳解
在Python異步編程生態(tài)中,asyncio.gather是并發(fā)任務(wù)調(diào)度的核心工具,本文將通過實際場景和代碼示例,展示如何結(jié)合信號量機制實現(xiàn)精準并發(fā)控制,希望對大家有所幫助2025-03-03
python構(gòu)建指數(shù)平滑預(yù)測模型示例
今天小編就為大家分享一篇python構(gòu)建指數(shù)平滑預(yù)測模型示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
在Python中發(fā)送UDP數(shù)據(jù)包的方法步驟
本文介紹了如何在Python中使用socket模塊實現(xiàn)UDP協(xié)議,包括創(chuàng)建客戶端和服務(wù)器,發(fā)送和接收數(shù)據(jù)包的過程,重點講解了UDP的特性以及如何設(shè)置端口號和IP地址進行通信,需要的朋友可以參考下2025-08-08
python通過cookie模擬已登錄狀態(tài)的初步研究
對于那些需要在登錄環(huán)境下進行的爬蟲操作,模擬登陸或偽裝已登錄狀態(tài)是一個剛性需求。這篇文章主要介紹了python通過cookie模擬已登錄狀態(tài)的相關(guān)資料,需要的朋友可以參考下2016-11-11
Django用戶認證系統(tǒng) Web請求中的認證解析
這篇文章主要介紹了Django用戶認證系統(tǒng) Web請求中的認證解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
Python實現(xiàn)1-9數(shù)組形成的結(jié)果為100的所有運算式的示例
下面小編就為大家?guī)硪黄狿ython實現(xiàn)1-9數(shù)組形成的結(jié)果為100的所有運算式的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

