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

如何为可返回多值的函数设置类型提示?解决MySQL查询函数mypy报错

解决MySQL查询函数的mypy类型提示问题

方法1:显式类型转换(推荐)

既然你确认返回的value是str或None,可以在列表推导中显式处理类型,让mypy识别:

return [str(value) if value is not None else None for value, _ in result]

这种方式既保证运行时类型正确,也能让类型检查器认可返回值符合List[Optional[str]]的要求。

方法2:用typing.cast强制标注类型

如果不想做实际类型转换,仅需告知mypy类型信息,可以使用cast:

from typing import cast, List, Optional

# ... 函数其他代码 ...
result = cursor.fetchall()
return cast(List[Optional[str]], [value for value, _ in result])

cast不会改变运行时行为,仅为类型检查器提供类型提示。

方法3:给查询结果添加精确类型注解

提前给result标注具体的元组类型,明确元素类型:

from typing import List, Tuple, Optional, Any

# ... 函数其他代码 ...
result: List[Tuple[Optional[str], Any]] = cursor.fetchall()
return [value for value, _ in result]

通过指定result是包含(Optional[str], Any)元组的列表,mypy就能自动推导出返回列表的类型符合要求。

额外提醒:规避SQL注入风险

你当前手动拼接参数字符串(比如param1_str = ",".join([f"'{lob}'" for lob in param1]))存在严重的SQL注入风险,建议改用数据库驱动的参数化查询能力处理IN子句,比如通过占位符配合参数列表传递,而非手动拼接带引号的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:52:37