将字符串参数传递给mysql

时间:2016-02-25 17:25:31

标签: python mysql-python

我试图使用argparse解析参数中的值。当我使用" print"测试条件时,哪种方法正常。当我现在将值添加到我的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

2 个答案:

答案 0 :(得分:1)

查询参数应传递到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,) )

答案 1 :(得分:0)

在尝试不同的排列之后,终于得到了一个有效的代码。我不得不删除args.machine中的','。也许'左连接'语句不再需要它了。

cur.execute(query, (args.machine))

感谢@alecxe的帮助