为啥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,)]

【问题讨论】:

这些是tuples 的代表。由于查询可以返回多个列,因此即使tuple 的长度只有一个元素,结果也是tuplelist 因为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查询结果会打印出不需要的字符?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SQL 子查询中的外部引用会产生不同的结果?

plsql查询中'%%'是模糊查询吗?为啥查不出来呢?

为啥这个使用字符串连接的查询会在 SQL Server Compact Edition 中引发错误?

如何用SQL循环查询语句

为啥在 SQL Azure 上运行查询要慢得多?

为啥这个 sql 查询不能准确传递结果?