You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python MySQL Connector执行SQL始终返回None问题求助

解决Python MySQL Connector查询返回None的问题

你遇到的问题是因为cursor.execute()方法本身不会返回查询结果,它的返回值固定为None。要获取查询结果,必须在执行语句后调用游标对应的结果获取方法。

正确的代码示例

1. 查询表列表(SHOW TABLES)

修改你的代码,执行execute()后用fetchall()获取所有结果:

import os
from os.path import join, dirname

import mysql.connector
from dotenv import load_dotenv


dotenv_path = join(dirname(__file__), 'usersSQL.env')
load_dotenv(dotenv_path)

DB_HOST = os.environ.get("DB_HOST")
DB_USER = os.environ.get("DB_USER")
DB_PASSWORD = os.environ.get("DB_PASSWORD")
DB_NAME = os.environ.get("DB_NAME")

usersDB = mysql.connector.connect(
    host=DB_HOST,
    user=DB_USER,
    password=DB_PASSWORD,
    database=DB_NAME
)

cursor = usersDB.cursor()
# 执行查询
cursor.execute("SHOW TABLES")
# 获取所有结果
tables = cursor.fetchall()
# 打印结果
for table in tables:
    print(table[0])  # 每个结果是元组,取第一个元素就是表名

# 关闭游标和连接
cursor.close()
usersDB.close()

2. 查询users表数据(SELECT * FROM users)

如果要查询表内数据,同样用结果获取方法:

cursor.execute("SELECT * FROM users")
users_data = cursor.fetchall()
for user in users_data:
    print(user)  # 打印每条用户数据

3. 创建表后的验证

如果是执行建表语句,execute()同样返回None,你可以通过再次执行SHOW TABLES或者查询表结构来验证是否创建成功:

# 执行建表语句
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
)
""")
# 提交事务(DDL语句在MySQL中默认自动提交,但显式提交更稳妥)
usersDB.commit()

# 验证表是否存在
cursor.execute("SHOW TABLES LIKE 'users'")
result = cursor.fetchone()
if result:
    print("users表已存在/创建成功")
else:
    print("users表创建失败")

关键说明

  • cursor.execute():负责执行SQL语句,返回值始终为None,仅表示语句执行完成(无语法错误等)。
  • 结果获取方法:
    • fetchall():获取所有查询结果,返回列表形式,每个元素是对应行的元组。
    • fetchone():获取下一行结果,返回单个元组,无结果时返回None。
    • fetchmany(size=N):获取指定数量的结果,返回列表形式。
  • 对于写操作(INSERT、UPDATE、DELETE、CREATE TABLE等),需要调用usersDB.commit()来提交事务,否则修改不会生效。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:43:23