【问题标题】:encode the elements of a tuple编码元组的元素
【发布时间】:2016-05-22 15:35:33
【问题描述】:

我有这段代码,它使用元组返回数据库的值

# Create a new connection   
    con=connection()

    #create a cursor to the connection
    cur=con.cursor()

    cur.execute("SELECT tragoudi.titlos, tragoudi.etos_par, cd_production.etaireia FROM tragoudi JOIN singer_prod ON tragoudi.titlos=singer_prod.title JOIN cd_production ON singer_prod.cd=cd_production.code_cd GROUP BY tragoudi.titlos HAVING tragoudi.titlos LIKE %s AND tragoudi.etos_par LIKE %s AND cd_production.etaireia LIKE %s",(titlos,etos_par,etaireia,))
    con.commit()

    row = cur.fetchall()
    return [((row[0][0]).encode("utf-8"),(row[0][1]),(row[0][2])),]

row[:][0]中的所有字符都是希腊字母,我必须对它们进行编码,所以我不会得到答案(u'\u0391\u0393\u03a9\u039d\u0399\u0391', 1978, u'SONY')

但是(u'ΑΓΩΝΙΑ', 1978, u'SONY')

这里的问题是我不知道元组的长度。 我知道这行代码return [((row[0][0]).encode("utf-8"),(row[0][1]),(row[0][2])),] 是错误的,因为它给了我这个错误IndexError('tuple index out of range',)

我想知道是否有一种方法可以使用 row[:][0].encode("utf-8") 之类的东西来编码 row[something][0] 处的所有元素

【问题讨论】:

  • 顺便说一句,因为您已经有了答案,为什么要获取 ALL 而不是将查询限制为 1 ?毕竟,您只使用返回的第一条记录。 p.s. len(row[0])

标签: python mysql


【解决方案1】:

您可以使用map() 函数。试试

return map( lambda x: (x[0].encode("utf-8"),)+x[1:], row )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    相关资源
    最近更新 更多