Python列表生成式應(yīng)用方式
列表生成式的線上運(yùn)用
建議先看Python列表生成式和字典生成式,再來看這篇。
select語(yǔ)句的優(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()獲得的是個(gè)嵌套的元組 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'))
高級(jí)用法:
把嵌套元組變成一個(gè)列表,列表里嵌套字典
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ǔ)句的優(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ǔ)句的優(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)的,那么前端傳什么字段過來,就更新對(duì)應(yīng)字段。字段就不會(huì)寫死了。
方法1主要是前端jquery傳過來的數(shù)據(jù)沒優(yōu)化好,如果前端以json格式傳過來,而且里邊包含一個(gè)id的key和一個(gè)data的key,id就只對(duì)應(yīng)一個(gè)id,而data的value是一個(gè)字典,字典里用每個(gè)資產(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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)得到當(dāng)前登錄用戶信息的方法
這篇文章主要介紹了python實(shí)現(xiàn)得到當(dāng)前登錄用戶信息的方法,結(jié)合實(shí)例形式分析了Python在Linux平臺(tái)以及Windows平臺(tái)使用相關(guān)模塊獲取用戶信息的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06Python學(xué)習(xí)之魔法函數(shù)(filter,map,reduce)詳解
這篇文章我們將來學(xué)習(xí)一下,Python中的三個(gè)高級(jí)函數(shù):filter()、map()、reduce(),這三個(gè)函數(shù)也被稱為魔法函數(shù),感興趣的小伙伴可以了解一下2022-04-04Python3.6安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法詳解
這篇文章主要介紹了Python3.6之安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02解決Python報(bào)錯(cuò)問題[SSL:?SSLV3_ALERT_HANDSHAKE_FAILURE]
這篇文章主要介紹了解決Python報(bào)錯(cuò)問題[SSL:?SSLV3_ALERT_HANDSHAKE_FAILURE],具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07基于Python開發(fā)PDF轉(zhuǎn)Doc格式小程序
這篇文章主要為大家詳細(xì)介紹了如何基于Python開發(fā)PDF轉(zhuǎn)Doc格式小程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03