为啥sql查询结果会打印出不需要的字符?
Posted
技术标签:
【中文标题】为啥sql查询结果会打印出不需要的字符?【英文标题】:Why is unwanted characters being printed on the sql query result?为什么sql查询结果会打印出不需要的字符? 【发布时间】: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,)]
【问题讨论】:
这些是tuple
s 的代表。由于查询可以返回多个列,因此即使tuple
的长度只有一个元素,结果也是tuple
的list
。
因为cursor.fetchall()
获取查询结果的所有行。它将所有行作为元组列表返回。
Related,虽然更关注单行结果。
要回答您的问题,您可以通过简单的理解来转换它。 [i[0] for i in result]
@Axe319 感谢您的帮助。我很感激。
【参考方案1】:
试试
connection.row_factory = lambda cursor, row: row[0]
而不是list(my_cursor.fetchall())
然后
result = connection.execute("""SELECT * FROM dummy""").fetchall()
或者你也可以使用strip()
来剪掉不需要的部分
【讨论】:
以上是关于为啥sql查询结果会打印出不需要的字符?的主要内容,如果未能解决你的问题,请参考以下文章