国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

python2.7 - python 如何執行mysql單個參數過濾

瀏覽:104日期:2022-09-12 08:02:36

問題描述

使用python執行mysql,報錯了:

name = 'AAA’A'cursor.execute(’select * from tb where name=%s’,name)cursor.execute(’select * from tb where name=%s’,(name))

都會報錯

query = query % tuple([db.literal(item) for item in args])TypeError: not all arguments converted during string formatting

但是以下不會報錯:

name = 'AAA’A'cursor.execute(’select * from tb where name=%s and %s’,(name,1))

python27 如何過濾mysql 單個參數

問題解答

回答1:

因為題主并未提及連接數據庫用的哪個庫,所以假設你使用的是mysqldb。可以看一下mysqldb的源碼:

...def execute(self, query, args=None): ''' ... args -- optional sequence or mapping, parameters to use with query. ... ''' if args is not None:# 首先判斷args是否為字典類型if isinstance(args, dict): # 以k-v形式填入查詢語句中。 query = query % dict((key, db.literal(item)) for key, item in args.iteritems())# 當args為非字典類型時else: # 遍歷args, 最后生成一個元組填入查詢語句中。 query = query % tuple([db.literal(item) for item in args]) ...

可以看到,args參數為一個可選的序列或者映射,即args參數的期望類型是list或者tuple。那么回頭再看一下你給的輸入參數:

>>> name = ’test’>>> type(name)<type ’str’>>>> type((name))<type ’str’>>>> type((’name’, 1))<type ’tuple’>

所以,解決方法很簡單:

>>> type((name, ))<type ’tuple’>>>> cursor.execute(’select * from tb where name=%s’,(name, ))1L

這里就涉及到一個小細節。當創建只有一個元素的元組時,需要加一個逗號,否則解釋器會當作一個字符串創建。

回答2:

cursor.execute(’select * from tb where name='%s'’,name)

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲最大成人 | 国产综合视频在线观看一区 | 欧美午夜性春猛交 | 国产高清免费视频 | 国产男女爽爽爽爽爽视频 | 久久免费精品视频在线观看 | 七七国产福利在线二区 | 欧美午夜毛片a级在线 | 国产真实生活伦对白 | 久久精品国产免费一区 | 男性吸女下身的视频 | 国产天堂在线一区二区三区 | 免费国产在线观看 | 一级片视频免费看 | 久草在线观看首页 | 91国在线观看| 亚洲香蕉久久一区二区 | 性久久久久久久 | 成人av手机在线观看 | 在线观看国产一区二区三区99 | 欧美视频自拍偷拍 | 在线播放人成午夜免费视频 | 国产精品亚洲高清一区二区 | a大片久久爱一级 | 免费公开视频人人人人人人人 | 亚洲精品成人一区 | 欧美综合视频 | 国产一区二区三区手机在线观看 | 欧美一级二级片 | 狠久久 | 欧美国产日韩久久久 | 久久免费特黄毛片 | 日本手机在线视频 | 国产成人福利视频在线观看 | 日韩加勒比 | 午夜在线亚洲 | 国模肉肉人体大尺度啪啪 | 久久e| 在线免费国产 | 美女被强行扒开双腿激情视频 | 香港经典a毛片免费观看爽爽影院 |