#Python
共 135 篇文章
pyodbc 中断查询后报 Connection is busy:检查旧游标结果
中断 SQL Server 大查询后,旧语句或未消费结果可能使同一 ODBC 连接拒绝新查询。区分结果消费、游标关闭、取消、事务结束与 MARS 的适用条件。
pip 提示 externally-managed-environment:本机与 GitHub Actions 分别处理
解释系统 Python 的 EXTERNALLY-MANAGED 标记,本机按项目选择 venv,GitHub Actions 显式配置 setup-python,避免盲目绕过保护。
Python timedelta.seconds 计算超过一天的时长时少了整天
seconds 只是归一化分量,负时长也可能给出正数。使用 total_seconds 或直接比较 timedelta,保留天、微秒和符号,核对浮点精度与输入时区语义。
asyncpg 在线改表后报 InvalidCachedStatementError:旧缓存遇到新结构
在线修改 PostgreSQL 结构后,旧连接的查询计划或类型缓存可能失效。区分事务内外处理、直接 asyncpg 与 SQLAlchemy 的缓存参数,并安排迁移和连接生命周期。
Python 比较时间报 can't compare offset-naive and offset-aware datetimes
带偏移的时间与 datetime.now() 比较时报 TypeError,使用 aware UTC 当前时间,区分 astimezone 转换和 replace 标记,避免无声改变时间含义。
Jupyter 调用 asyncio.run 报 running event loop:在单元格中等待协程
Jupyter 单元格已有事件循环时,使用顶层 await 等待异步函数。区分普通脚本入口、autoawait 配置和库内部同步入口,保留异常与结果传递。
Python 列表调用 sort 后,接收结果的变量变成 None
Python list.sort 原地修改列表并返回 None,空列表也不例外。按是否需要修改输入选择单独调用 sort 或返回 sorted 新列表,核对别名、空输入与恢复原顺序的边界。
Starlette TestClient 升级 HTTPX 后报 unexpected keyword argument app
HTTPX 0.28 删除 app 参数后,旧 Starlette TestClient 可能在构造阶段失败。核对实际测试环境、框架约束与锁文件,再验证 lifespan 和原测试。
pyodbc 报 Login failed for user 空用户名:先检查 UID/PWD 属性
pyodbc 在证书错误之后报空用户名登录失败,核对 ODBC UID/PWD 属性、SQL 登录与 TLS 验证,避免把不同阶段的问题混在一起。
Python 函数默认列表在多次调用之间不断累积元素
Python 可变默认参数在函数定义时创建,多次省略参数会共享同一个列表。用 None 在调用时创建列表,并明确显式传入列表时采用原地修改还是复制。
Python SMTP 报 WRONG_VERSION_NUMBER:核对端口与 TLS 启动方式
Python SMTP 连接报 WRONG_VERSION_NUMBER,按服务实际入口选择 SMTP 加 STARTTLS 或 SMTP_SSL,区分超时、握手和认证,并保留证书验证。
Python json.dumps 报 Object of type set is not JSON serializable
json.dumps 遇到 set 类型报错,可能是变量外多写了花括号。区分字典、集合与 JSON 文本,按字段协议修正构造方式,并验证输出的类型和嵌套结构。
pandas read_csv 读编号后前导零消失:按字符串与空值规则导入
read_csv 将编号推断成数值后前导零丢失,应在读取时按列声明字符串,并明确默认缺失词、空编号与 converter 的行为;已损失格式需从原件恢复。
pandas 1.5 升级 SQLAlchemy 2 后读库报 ObjectNotExecutableError
pandas 1.5 与 SQLAlchemy 2 组合读取数据库报不可执行对象,核对堆栈,用 Connection 和 text 参数绑定修复,并区分当前版本支持情况。
Python 再次调用 logging.basicConfig 后,日志仍写到原来的位置
root 已有 handler 时,basicConfig 默认不会覆盖配置。先确认配置来源,优先在启动阶段只配置一次;需要重配时明确 force 的版本与关闭旧 handler 的影响。
Python pathlib 拼接路径后父目录消失
pathlib 遇到后续绝对路径分量会舍弃前面的目录。区分 POSIX 绝对路径、Windows 根路径与相对路径,修正输入约定,避免用删除斜杠代替安全验证。
pandas merge 后行数变多:检查重复连接键与关系约束
pandas merge 后行数增多,按实际连接键检查多重匹配,用 validate 声明唯一性关系,结合 indicator 和缺失键规则核对结果,避免随意删除记录。
VS Code 无法运行 Activate.ps1:先区分 PowerShell 策略与 Python 环境
VS Code 的 Activate.ps1 被 PowerShell 策略阻止,直接检查环境解释器,按终端与组策略选择激活方式,临时设置可恢复。
psycopg2 写 JSONB 报 can’t adapt type dict:显式选择 JSON 适配
JSONB 列不会替 psycopg2 自动适配 dict。用局部 Json 包装保留参数绑定,区分重复序列化、读写注册、JSON null 与 SQL NULL,并核对全局 hstore 冲突。


