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

Python3.8+Flask项目出现local variable 'conn' referenced before assignment报错求助

问题原因及修复方案

报错根因

local variable 'conn' referenced before assignment报错的直接原因很明确:

  • 你定义的conn变量仅在try代码块的连接成功分支中才会完成赋值,一旦pymysql.connect()执行过程中抛出异常,程序会直接跳转进except分支,此时conn从未被赋值,函数末尾执行return conn时就会触发该错误。

代码其他问题

你贴出的代码还有两处明显的可优化点:

  • 函数定义时传入的db参数全程没有被使用,属于无效参数,可以直接删除
  • 当前直接捕获所有Exception的写法过于宽泛,无法定位数据库连接的具体故障(比如权限不足、实例地址不通、账号密码错误等),建议捕获pymysql.MySQLError并打印具体异常信息

修复后代码

import pymysql

database_name = "dbx80"
database_user = "user_auth"
database_password = "Jan2019@"


def connect_database():
    conn = None
    try:
        conn = pymysql.connect(
            unix_socket="/cloudsql/servicisEX:us-central1:dbx43",
            port = 3306,
            user = database_user,
            password = database_password,
            database = database_name,  
            charset="utf8"
        )
        print(f"Connection {database_name} Succesful")
    except pymysql.MySQLError as e:
        print(f"Error connecting to {database_name}: {str(e)}")
    return conn

调用注意事项

上层调用该函数获取连接后,先判断返回的conn是否为None,再执行后续的数据库操作,避免后续操作触发空指针报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 17:57:02