Python列表生成式應用方式
列表生成式的線上運用
建議先看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í)行結果: '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)的,那么前端傳什么字段過來,就更新對應字段。字段就不會寫死了。
方法1主要是前端jquery傳過來的數(shù)據(jù)沒優(yōu)化好,如果前端以json格式傳過來,而且里邊包含一個id的key和一個data的key,id就只對應一個id,而data的value是一個字典,字典里用每個資產信息字段作為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)] # 結果為:["'hostname‘='xxx‘","'cpu‘='xxx‘",......] sql = 'update zichan set %s where id=%s'%(','.join(arr),ida)
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python學習之魔法函數(shù)(filter,map,reduce)詳解
這篇文章我們將來學習一下,Python中的三個高級函數(shù):filter()、map()、reduce(),這三個函數(shù)也被稱為魔法函數(shù),感興趣的小伙伴可以了解一下2022-04-04Python3.6安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法詳解
這篇文章主要介紹了Python3.6之安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02解決Python報錯問題[SSL:?SSLV3_ALERT_HANDSHAKE_FAILURE]
這篇文章主要介紹了解決Python報錯問題[SSL:?SSLV3_ALERT_HANDSHAKE_FAILURE],具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07