【问题标题】:Python MySQL returning table data - only shows everything on one linePython MySQL返回表数据-仅在一行上显示所有内容
【发布时间】:2014-06-08 19:47:20
【问题描述】:

基本上,我是从表中返回数据:

 >mysql> SELECT x,y FROM xandy;  
 >+------+------+  
>| x    | y    |  
>+------+------+  
>|    5 |    2 |   
>|    4 |    6 |  
>|    7 |    6 |  
>|    4 |    6 |  
>|    8 |    7 |  
>|    4 |    6 |  
>|   11 |   33 |  
>|   33 |   22 |  
>+------+------+  
>8 rows in set (0.00 sec)  

(抱歉格式不好)

    def fetch():

      try:
       db = MySQLdb.connect("localhost",user="root",passwd="****",db="logger")

       cursor=db.cursor()

       SQLString = "SELECT x,y FROM xandy;"
       cursor.execute(SQLString)
       rows=cursor.fetchall()

       return rows
       db.close()

但是,当我得到返回值时,我会以以下格式将其全部放在一行中:

((5.0, 2.0), (4.0, 6.0), (7.0, 6.0), (4.0, 6.0), (8.0, 7.0), (4.0, 6.0), (11.0, 33.0), (33.0, 22.0 ), (6.0, 4.0))

有没有办法以简单的表格形式显示它,即带有 x 和 y 的两列? (ps我将在这一步之后使用gnuplot)

【问题讨论】:

  • 附带说明:您的db.close() 永远无法到达。

标签: python mysql sql return


【解决方案1】:

该数据看起来不错,因为它是元组的元组,您可以像表一样对其进行索引。

即您可以使用

获取第 m 行和第 n 列中的元素
rows[m][n]

您只是想将其打印成 2 列吗?

for x, y in rows:
    print("{0}, {1}".format(x,y)) 

【讨论】:

  • 我只能返回 "5.0, 2.0" 而不能返回其余的?还有其他建议吗?
  • 当你说你只能返回 "5.0, 2.0" 你是什么意思?你是在做“rows = cursor.fetchall()”然后“返回行”吗?我很困惑您是否在查看数据或返回数据时遇到问题。您在问题中提到的返回对象包含所有数据。因此,这只是您希望该数据采用哪种格式的问题。
【解决方案2】:

假设有一个名为 fetch 的函数与您上面的类似,您可能会这样使用它:

rows = fetch()
print '\n'.join(' '.join(str(x) for x in row) for row in rows)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多