SQLite hex 的整数参数:255 为什么变成 323535,而不是 FF 把数据库里的整数 255 交给 hex,希望得到 FF,结果却多出六个字符 323535。函数没有把整数算错,而是在处理另一种表示:数字先变成十进制文字,随后编码这些文字的字节。下面分别传入 Python 整数、字符... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
SQLite 文本里的 NUL:长度只报二,为什么后面的字符仍然存在 导入一段编号后,SQLite 的 length 只返回二,应用重新读取却拿到五个字符。若立刻把问题归为驱动截断,就会查错方向。文本中间的 NUL,也就是 U+0000,会让 length 在那里停止计数,但后面的内容... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
SQLite min 与 max 的参数个数:多写一个值,为什么汇总结果变成了逐行结果 原查询用 max(v) 求整张表的最大值。为了让结果至少为五,维护者顺手改成 max(v, 5),结果接口突然收到三行。这里多出来的实参改变了函数类别:SQLite 的 min 和 max 在只有一个实参时进行聚合,... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite json_each 与 json_tree:看见了数组,为什么还没有拿到里面的元素 把嵌套配置交给 json_each,结果里出现了 panel 和 sizes 两行,却没有 theme 或每个尺寸。json_each 在这里展开的是根对象的直接孩子;一个孩子是对象、另一个孩子是数组,它不会自动把它... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
SQLite OR FAIL 与 ABORT:一条插入报错,前面写进去的行为什么还在 一次多行插入遇到重复编号,应用收到 IntegrityError,便认为这条语句一行也没写入。使用默认的 ABORT 时这个判断通常符合本例,但如果 SQL 明确写了 OR FAIL,失败点之前的成功修改会留下来。只... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite 标量子查询:查到两条配置,为什么没有报错却只返回一个值 应用通过一个嵌套查询读取主题颜色,配置表里误留了两条同名记录,页面却没有报错,只悄悄显示其中一个颜色。如果预期“一条配置只能对应一个值”,查询成功反而可能掩盖重复数据:SQLite 的标量子查询不会自动替你验证行数唯... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
SQLite substr 负长度:往前取两个字符,为什么结果没有倒过来 从固定后缀前取出四位编号,写出负长度以后,结果顺序却没有反转。有时甚至少取一个字符。这里容易把三个概念混在一起:起点从哪边数、选择起点哪一边,以及最终文本按什么顺序返回。负长度改变取值方向,不改变排列顺序SQLite... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python sqlite3 复用游标:外层查询还有两行,为什么内层查一次就读不到了 循环读取任务清单时,内部再查一次数量,处理完第一条以后循环就结束了。表里明明还有数据,单独执行同一查询也能返回全部记录。这时值得检查是否把同一个 Cursor 同时用于外层遍历和内层查询:游标管理当前执行及取行状态,... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python sqlite3 的连接上下文:with 已经结束,为什么数据库连接仍然能查询 把 sqlite3.connect 放进 with,导入结束后继续执行查询居然仍然成功。很多人从文件对象的习惯推断,离开 with 就一定关闭了资源,但连接对象的上下文协议承担的是事务处理,不负责关闭连接。它是否提交... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python sqlite3.Row 重名列:两份 id 都在,为什么转成字典却只剩一个 把用户表与订单表连接后,两列都叫 id。终端按位置打印时,用户编号和订单编号都在;换成 dict(row) 交给接口,却只剩一个字段。应先核对结果列名,再检查转换方式,不能因为 SQL 返回了两列,就假定名称访问也能... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读