Python只能将元组(不是" str")连接到元组错误

时间:2015-11-08 14:55:26

标签: python

我在python中有一个从数据库获取ips的函数,我想迭代它们并调用ping函数但是我得到一个错误"只能连接元组(不是" str")发生错误"在主题领域。当我说print函数show(ipps)被调用时,它只打印数组中的最后一个值

json转储返回

{"ip addresses": [["192.168.0.11"], ["192.168.0.12"], ["192.168.0.13"], ["192.168.0.15"]]}

@ps_gaming.route('/getPSStatusping')
def getPSStatusping():
    try:
        if session.get('id'):
            con = mysql.connect()
            cursor = con.cursor()
            cursor.callproc('sp_getPSIPSstats')
            all_my_ps = cursor.fetchall()

            for ipps in all_my_ps:
                show(ipps) //error is thrown here
            return json.dumps({"ip_addresses":all_my_ps})
        else:
            return render_template('error.html', error='Unauthorized Access')
    except Exception as e:
        return render_template('error.html', error=str(e))
    finally:
        cursor.close()
        con.close()

其他功能

def isUp(hostname):
    output = subprocess.Popen(["ping.exe", hostname], stdout=subprocess.PIPE).communicate()[0]

    print(output)

    if ('unreachable' in output):
        return '0'
    else:
        return '1'

def show(hostname1):    
    value = isUp(hostname1)

    if ('1' in value):
        print hostname1 + ' Is Active'
    else:
        print hostname1 + ' Is Unreachable'

任何建议

2 个答案:

答案 0 :(得分:1)

show内,hostname1是一个元组。您尝试向其添加字符串,因此您看到的错误。您需要将hostname1转换为字符串,或从中提取字符串值。我的猜测是,hostname1元组只包含一个值,因此您可以使用类似print hostname1[0] + ' Is Active'

的内容

hostname1是一个元组,因为cursor.fetchall()将返回元组(列)的元组(行),并迭代外部元组。在每次迭代中,ipps本身就是一个元组(尽管可能只有该元组中的一个元素)。尽管每行显然只包含一列,但查询仍然将每一行作为元组返回。将它转换为json时,它表示为嵌套列表。

答案 1 :(得分:0)

在您的show函数中,尝试将hostname1转换为字符串,即执行print str(hostname1) + ' is active',同样不可用