Snowpark Python执行报错:NameError: name 'conn' is not defined 求助
问题排查与修复方案
核心错误原因
main函数调用getStruct(conn)时,conn变量从未在main作用域内定义,直接触发NameError。getStruct函数定义了conn参数,但函数内部完全不需要该参数,反而重新赋值同名变量,造成逻辑冗余混乱。getStruct函数未返回创建好的数据库连接,即使内部成功生成conn,外部也无法获取。- 日志初始化存在引用错误:导入
whlib.utils.whliblogging as log,却使用logs.Logging调用,应为log.Logging。
修复后的完整代码
import snowflake.snowpark as snowpark from snowflake.snowpark.functions import col import wheel_loader def getStruct(): wheel_loader.load('whlib-0.0.1-py3-none-any.whl') from whlib.utils import connectionProperties as connProps from whlib.utils import connection as connection from whlib.utils import whliblogging as log from whlib.cln import entity as entity dbConnectionProperties = connProps.DbConnectionProperties() dbConnectionProperties.DBServer = 'xxxxxxxxxxx' dbConnectionProperties.DBUser = 'xxxxxxx' dbConnectionProperties.DBPword = 'xxxxxxxxxx' dbConnectionProperties.DBDatabase = 'xxxxxxxxxxxxxxxxx' connectionProperties = connProps.ConnectionProperties() connectionProperties.dbConnectionProperties = dbConnectionProperties # 修正日志初始化引用 logger = log.Logging(connectionProperties) conn = connection.connect(connectionProperties, logger) # 返回创建好的连接对象 return conn def main(session: snowpark.Session): # 调用getStruct无需传参,获取返回的连接 conn = getStruct() # 可根据需求返回对应结果,比如连接状态或后续处理数据 return conn
关键修复点说明
- 移除
getStruct的conn参数,函数内部自行创建连接,无需外部传入。 - 修正日志模块调用错误,匹配导入的别名
log。 - 在
getStruct末尾添加return conn,将连接对象返回给调用者。 main函数中先调用getStruct()获取连接,避免使用未定义变量。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

