我想使用argparse從參數中解析一個值。當我用「打印」測試我的條件時,它工作正常。當我現在將值添加到我的sql代碼時,會發生錯誤。請原諒我不太漂亮的sql查詢,這是我可以獲取我需要的數據的唯一方法。將字符串參數傳遞給mysql
錯誤消息:類型錯誤:必須是字符串或只讀緩衝器,而不是元組
import mysqldb
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-m','--machine', nargs=1, help="Machine Hostname", action="store")
args = parser.parse_args()
query = (""" select ifname, usname, mtdesc, lobuilding Location from
interface left join machine on ifmcid=mcid
left join machine_type on mcmtid=mtid left join user on mcusid=usid left join location on mcloid=loid
WHERE mccurrentosid = 32 AND ifname = %s """, (args.machine,))
cur.execute(query)
for row in cur.fetchall():
print row
是你會得到錯誤信息? – jsbueno
TypeError:必須是字符串或只讀緩衝區,而不是元組 – gratchie
因此,您的答案也是如此 - 將'args.machine'參數作爲簡單參數傳遞,不需要封裝在元組中,就像字符串格式化一樣使用'%'運算符。 – jsbueno