-
OneToOneField应由从端(如Profile)指向主端(如User),设on_delete=models.CASCADE、related_name='profile'、unique=True;反向访问user.profile需用hasattr()或异常捕获,避免N+1用select_related;与ForeignKey(unique=True)本质不同,不可直接迁移替换。
-
结构化日志字段命名须用snake_case,禁用PascalCase/camelCase;避免Python保留字;禁止动态值嵌入字段名;extra参数仅支持扁平字典;时间字段统一用带时区的ISO8601timestamp;敏感字段必须前置脱敏;字段设计需兼顾长期兼容性。
-
Flask默认Session不能跨进程共享,因其使用签名Cookie将加密数据存于客户端,服务端无状态;需用Flask-Session+Redis实现共享,关键配置包括SESSION_TYPE="redis"、SESSION_REDIS传Redis实例、显式设置SESSION_KEY_PREFIX等。
-
日志监控是将原始日志转化为可查、可算、可告警、可决策的数据资产,核心要求采集不丢、格式统一、存得稳、查得快、分析准、告得及时。
-
本文探讨在Python中为pathlib.Path添加自定义功能(如环境变量展开)的最佳实践,指出直接继承或包装Path存在兼容性与可维护性风险,并推荐更Pythonic的函数式辅助方案。
-
repr函数返回对象的官方字符串表示,主要用于开发者调试。1.调用repr(obj)可获取能反映类型和内容的字符串,理想情况下可用于重建对象。2.对内置类型,repr显示带引号或明确结构的形式,如repr("hello")返回"'hello'",repr([1,2,3])返回"[1,2,3]"。3.与str不同,str面向用户易读输出,repr强调精确性,print调用str,交互式环境默认显示repr结果。4.若类未定义__str__,则使用__repr__作为备选。5.自定义类中实现__repr__方
-
fcntl.flock不能跨进程保护追加写,因O_APPEND使内核自动seek到末尾再write,而flock锁的是fd而非追加行为本身,导致多进程write仍可能重叠;正确做法是用os.open获取fd、加锁、seek(0,2)、write、flush、解锁。
-
dumpdata导出需按外键依赖顺序显式指定模型,loaddata要求fixture置于fixtures/目录且文件名合法,JSON时间字段须保持ISO格式,导入后需重置主键序列。
-
Python3.10安装失败主因是OpenSSL版本过低(需≥1.1.1)或缺失openssl-devel/libffi-devel,导致_ssl、_ctypes等模块编译跳过;Windows需勾选“AddtoPATH”并禁用路径长度限制,推荐使用Miniconda+pyenv替代手动编译,并通过importssl和sqlite3验证模块是否真正可用。
-
asyncio.gather适合多个独立、无依赖、可并行发起的协程任务,如并发HTTP请求;需传入已调用的协程对象,避免同步阻塞,推荐加return_exceptions=True捕获异常,并用Semaphore控制并发量。
-
Python集合的交、并、差、对称差运算分别对应共同元素、合并去重、专属元素和差异元素的提取,各运算符与方法需注意参数类型、是否原地修改及运算律特性。
-
[[0]*n]*m初始化二维数组会出问题,因为它创建的是m个指向同一内层列表的引用,修改任一元素会导致所有行对应位置同步变化;正确方式是用[[0for_inrange(n)]for_inrange(m)]生成独立子列表。
-
shift正数下移、负数上移,方向易错;groupby后需组内独立移位;差分优先用diff();NaN处理需谨慎,避免误填;多列差分用df.diff(axis=1)。
-
直接爬社交平台页面几乎必然失败,因其前端依赖JS渲染、反爬机制严格、登录态难模拟、DOM结构频繁变动且存在法律风险;官方API是唯一可持续方案。
-
开启echo=True仅显示SQL和参数,不显示执行时间;需配合echo_pool=True查连接池问题,测真实耗时须用应用层日志或数据库慢日志。