【发布时间】:2021-08-27 08:04:51
【问题描述】:
我正在使用下面的代码查询我的 SQL 表并将结果转换为列表。为什么列表中有多余的逗号和括号?
查询结果
[(34830,), (34650,), (35050,), (34500,), (35050,), (34500,), (34725,), (34550,), (34725,), ( 34760,), (34760,)]
它应该只返回一个只有数字的列表。对吧?
架构很简单(链接文本,价格 int);
这里有什么问题?我的代码有问题吗?
import pymysql
connection = pymysql.connect(host='localhost',
user='root',
password='passme',
db='hpsize') # connection obhect to pass the database details
sql = "SELECT price FROM dummy WHERE link ='https://www.flipkart.com/bose-noise-cancelling-700-anc-enabled-bluetooth-headset/p/itma57a01d3bd591?pid=ACCFGYZEVVGYM8FP'"
my_cursor = connection.cursor()
my_cursor.execute(sql)
result = list(my_cursor.fetchall())
print(result)
connection.close()
查询结果
[(34830,), (34650,), (35050,), (34500,), (35050,), (34500,), (34725,), (34550,), (34725,), ( 34760,), (34760,)]
【问题讨论】:
-
这些是
tuples 的代表。由于查询可以返回多个列,因此即使tuple的长度只有一个元素,结果也是tuple的list。 -
因为
cursor.fetchall()获取查询结果的所有行。它将所有行作为元组列表返回。 -
Related,虽然更关注单行结果。
-
要回答您的问题,您可以通过简单的理解来转换它。
[i[0] for i in result] -
@Axe319 感谢您的帮助。我很感激。
标签: mysql sql python-3.x mysql-python