MySQL查询的fetchall() 结果

后端开发 2026-07-09

我目前正在尝试用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)

那么问题如下:

  1. 如何确保 myresult_2 的输出对后续的MySQL查询友好,同时呈现为一个整齐的列表?
  2. 如何以一种让 mysql_look_query_3mysql_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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章