【发布时间】: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])