【问题标题】: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 感谢您的帮助。我很感激。

标签: mysql sql python-3.x mysql-python


【解决方案1】:

试试

connection.row_factory = lambda cursor, row: row[0]

而不是list(my_cursor.fetchall())

然后

result = connection.execute("""SELECT * FROM dummy""").fetchall()

或者你也可以使用strip() 来剪掉不需要的部分

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2019-09-14
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多