导入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
相关产品推荐
相关产品推荐

