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

如何为with语句中的psycopg2 cursor变量添加静态类型标注

为psycopg2的cursor添加类型标注

要给with语句中的cursor变量添加psycopg2.extensions.cursor类型标注,核心是先导入该类型(建议用别名避免和变量名冲突),然后在代码块内给变量标注类型。

具体实现方式

  1. 导入类型并定义别名
    由于变量名也是cursor,直接导入会导致命名冲突,所以导入时用别名区分:

    from psycopg2.extensions import cursor as Cursor
    
  2. 在with代码块内添加标注
    在with语句的代码块中,直接给cursor变量标注类型即可:

    import psycopg2
    from psycopg2.extensions import cursor as Cursor
    
    # 假设已建立数据库连接
    connection = psycopg2.connect("dbname=your_db user=your_user password=your_pwd host=your_host")
    
    with connection.cursor() as cursor:
        cursor: Cursor  # 添加类型标注
        # 执行SQL操作
        cursor.execute("SELECT * FROM your_table;")
        results = cursor.fetchall()
    

可选:仅在类型检查时导入(优化)

如果担心运行时导入的影响,可以结合TYPE_CHECKING常量,仅在类型检查阶段导入类型:

import psycopg2
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from psycopg2.extensions import cursor as Cursor

connection = psycopg2.connect("dbname=your_db user=your_user")

with connection.cursor() as cursor:
    cursor: "Cursor"  # 使用字符串标注避免运行时命名问题
    cursor.execute("INSERT INTO your_table (col) VALUES (%s);", ("value",))
    connection.commit()

这种方式不会影响运行时性能,同时能让类型检查工具(如mypy)识别到cursor的正确类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:09:50