如何为with语句中的psycopg2 cursor变量添加静态类型标注
为psycopg2的cursor添加类型标注
要给with语句中的cursor变量添加psycopg2.extensions.cursor类型标注,核心是先导入该类型(建议用别名避免和变量名冲突),然后在代码块内给变量标注类型。
具体实现方式
导入类型并定义别名
由于变量名也是cursor,直接导入会导致命名冲突,所以导入时用别名区分:from psycopg2.extensions import cursor as Cursor在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
相关产品推荐
相关产品推荐

