MySQL查询的fetchall() 结果
我目前正在尝试用Python构建一个嵌套的MySQL查询。
但我有点困惑,不知道如何对以 "()" 和 "," 这样的奇怪格式传入的查询作出响应,而不是一个看起来更整齐的列表。
据我所知,数据库中的UUID看起来是普通的VARCHAR值。
nameofthecard = "Tim Bogard"
mysql_look_query_2 = """SELECT uuid FROM cards WHERE name = """ + nameofthecard + ""
mycursor.execute(mysql_look_query_2)
myresult_2 = mycursor.fetchall()
print(myresult_2)
#will result in:
#[('dc16bd4e-4cff-5de2-81a2-2db11185814c',), ('09e73939-6d95-5637-a63b-c7be5401ddc5',), ('00010d56-fe38-5e35-8aed-518019aa36a5',), ('bd7b1f74-1af9-57f2-97c9-5679bf92cfb1',)]
我想在另一个查询中使用 myresult_2 的输出,但它将以以下格式嵌入结果:
mysql_look_query_3 = """SELECT price FROM prices WHERE uuid IN ('dc16bd4e-4cff-5de2-81a2-2db11185814c', '09e73939-6d95-5637-a63b-c7be5401ddc5', '00010d56-fe38-5e35-8aed-518019aa36a5', 'bd7b1f74-1af9-57f2-97c9-5679bf92cfb1')"""
mycursor.execute(mysql_look_query_3)
myresult_3 = mycursor.fetchall()
print(myresult_3)
那么问题如下:
- 如何确保
myresult_2的输出对后续的MySQL查询友好,同时呈现为一个整齐的列表? - 如何以一种让
mysql_look_query_3与mysql_look_query_2嵌套在一起的方式来实现?
解决方案
你不需要两条查询。这是我会这样做的方式。请注意,nameofthecard 正在把一个参数传给 execute 方法:
mysql_look_query_3 = """SELECT price FROM prices WHERE uuid IN
(SELECT uuid FROM cards WHERE name = %s)"""
mycursor.execute(mysql_look_query_3, (nameofthecard,))
myresult_3 = mycursor.fetchall()
print(myresult_3)
你也可以用内连接(INNER JOIN)来实现:
mysql_look_query3 = """SELECT price from
prices inner join cards on prices.uuid = cards.uuid and cards.name = %s"""
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。