【发布时间】:2016-02-25 17:25:30
【问题描述】:
我正在尝试使用 argparse 解析参数中的值。当我用“打印”测试我的条件时,效果很好。当我现在将值添加到我的 sql 代码时,就会发生错误。请原谅我不太漂亮的 sql 查询,这是我获得所需数据的唯一方法。
错误信息: TypeError:必须是字符串或只读缓冲区,而不是元组
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
【问题讨论】:
-
您收到的错误信息是什么?
-
TypeError: 必须是字符串或只读缓冲区,而不是元组
-
所以,您的答案也有 - 将
args.machine参数作为普通参数传递,不封装在元组中,就像使用%运算符进行字符串格式化所需要的那样。跨度> -
对不起,你能举个例子来说明你的建议吗?这里对 python 很陌生。谢谢,
-
不过,请检查@alexe 的答案。
标签: python mysql-python