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

导入psycopg2后执行cur = conn.cursor()提示conn未定义,如何解决?

解决Psycopg2中'conn is not defined'的名称错误

嘿,这个问题其实很直观——你代码里的变量名不匹配啦!

你创建数据库连接的时候用的变量名是connection_to_db,但后面调用游标时却写成了conn.cursor(),Python当然找不到conn这个未定义的变量咯。

另外,你的异常处理逻辑也有点小问题:psycopg2.connect()如果连接失败会直接抛出异常,不会返回False,所以原来的if connection_to_db:判断其实没起到作用,应该把connect()放到try块里才对。

给你修正后的完整脚本:

# 展示PostgreSQL与Psycopg协同使用的小脚本
import psycopg2

try:
    # 创建连接,变量名保持一致
    connection_to_db = psycopg2.connect("dbname='XYZ' user='XYZ' host='localhost' password='XYZ'")
    print("已登录")
    
    # 使用正确的变量名获取游标
    cur = connection_to_db.cursor()
    # 注意SQL语句里的**要改成*,不然会触发语法错误
    cur.execute("SELECT * FROM weather")
    
    # 可选:添加获取查询结果的逻辑
    # results = cur.fetchall()
    # for row in results:
    #     print(row)
        
except psycopg2.Error as e:
    print(f"无法连接到数据库或执行查询:{e}")
finally:
    # 好习惯:用完后关闭游标和连接
    if 'cur' in locals():
        cur.close()
    if 'connection_to_db' in locals():
        connection_to_db.close()

还要提醒你:SQL语句里的SELECT ** FROM weather是错误写法,必须把**改成*,不然执行查询时会触发数据库语法错误哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:07:38