You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python从只读MySQL数据库取数:连接成功但查询返回None

解决mysql.connector执行SELECT返回None的问题

嘿,这问题其实挺常见的,我来给你掰扯清楚!

你遇到的cursor.execute()返回Nonemysql.connector的正常设计——这个方法只负责执行SQL语句,执行成功后就返回None,和你的只读权限完全没关系(毕竟你已经成功连上数据库,而且执行SELECT没报错,说明权限是足够的)。

要拿到查询结果,你得调用游标对应的结果获取方法,常用的有这几个:

  • fetchall():一次性获取所有查询结果,返回一个包含元组(或字典)的列表
  • fetchone():每次获取一行结果
  • fetchmany(n):获取指定数量(n)的结果

给你修正后的代码,这样就能正常拿到数据了:

cursor = connection.cursor()
try:
    query1 = 'SELECT * FROM table_name'
    # execute本身返回None是正常的,不用纠结这个
    cursor.execute(query1)
    # 获取所有查询结果
    result = cursor.fetchall()
    print(result)
    
    # 如果你想逐行处理数据,也可以直接遍历游标:
    # for row in cursor:
    #     print(row)
finally:
    connection.close()

另外,如果你希望结果以字典格式返回(方便通过字段名直接访问,比如row['column_name']),创建游标时可以加上dictionary=True参数:

cursor = connection.cursor(dictionary=True)

这样调整后,你就能看到预期的查询结果啦!

内容的提问来源于stack exchange,提问作者Deepak Aggarwal

火山引擎 最新活动