将字符串参数传递给 mysql
passing string argument to mysql
我正在尝试使用 argparse 从参数中解析一个值。当我用 "print" 测试我的条件时,效果很好。当我现在将值添加到我的 sql 代码时发生错误。请原谅我不那么漂亮的 sql 查询,这是我可以获得所需数据的唯一方法。
错误信息:类型错误:必须是字符串或只读缓冲区,而不是元组
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
查询参数应传入execute()
:
query = """
select
ifname, usname, mtdesc, lobuilding
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
"""
cur.execute(query, (args.machine,) )
在尝试了不同的排列后,终于得到了一个有效的代码。我不得不删除 args.machine 中的“,”。也许 'left join' 语句不再需要它了。
cur.execute(query, (args.machine))
感谢@alecxe 的帮助
我正在尝试使用 argparse 从参数中解析一个值。当我用 "print" 测试我的条件时,效果很好。当我现在将值添加到我的 sql 代码时发生错误。请原谅我不那么漂亮的 sql 查询,这是我可以获得所需数据的唯一方法。
错误信息:类型错误:必须是字符串或只读缓冲区,而不是元组
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
查询参数应传入execute()
:
query = """
select
ifname, usname, mtdesc, lobuilding
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
"""
cur.execute(query, (args.machine,) )
在尝试了不同的排列后,终于得到了一个有效的代码。我不得不删除 args.machine 中的“,”。也许 'left join' 语句不再需要它了。
cur.execute(query, (args.machine))
感谢@alecxe 的帮助