Python代码报错NameError: name 'mydb' is not defined求助
解决NameError: name 'mydb' is not defined问题
问题根源
mydb是connect()函数内部的局部变量,函数外部无法直接访问。- 你没有调用
connect()函数,就算把mydb设为全局变量,也不会被初始化。
解决方案1:让函数返回连接对象(推荐)
这种方式更符合代码规范,避免全局变量带来的维护问题:
import mysql.connector def connect(): try: mydb = mysql.connector.connect( host='localhost', user='root', password='12345', database="Food" ) return mydb # 返回数据库连接对象 except mysql.connector.Error as e: print(f"连接失败: {e}") return None # 连接失败返回None # 调用函数获取连接 mydb = connect() if mydb: # 确认连接成功后再创建游标 mycursor = mydb.cursor()
解决方案2:正确使用全局变量(不推荐)
如果一定要用全局变量,需要在函数内声明并调用函数初始化:
import mysql.connector # 先在全局作用域声明变量 mydb = None def connect(): global mydb # 声明使用全局变量 try: mydb = mysql.connector.connect( host='localhost', user='root', password='12345', database="Food" ) except mysql.connector.Error as e: print(f"连接失败: {e}") # 必须调用函数初始化全局变量 connect() if mydb: mycursor = mydb.cursor()
额外提示
- 不要使用空
except语句,捕获具体的异常类型(比如mysql.connector.Error)并打印异常信息,能更精准排查问题。 - 无论哪种方案,都必须调用
connect()函数,否则数据库连接对象不会被创建。
内容的提问来源于stack exchange,提问作者frky
相关产品推荐
相关产品推荐

