返回

文章详情

sqlite-utils 4.0rc2,主要由Claude Fable编写(约149.25美元)

Hacker News2026年7月5日 06:19

2026年7月5日,我在几周前写过关于sqlite-utils 4.0rc1发布的文章。由于我们的Max订阅中只有Claude Fable还可以使用几天,我决定看看他能否帮助我达到一个我真正感到满意的4.0稳定版本,因为我尽量遵循SemVer,并且希望不兼容的主要版本尽可能少。我从这个提示开始,在我的iPhone上使用Claude Code进行网页编写:发货稳定4.0版本前的最终审查 - 在最后时刻发现可能导致重大变更的问题非常重要。以下是他为我创建的初始报告。有几个我自己还没有遇到的重大问题——5个被Fable归类为“发布阻塞者”的问题。以下是问题中最糟糕的一个:1. delete_where() 从不提交并破坏连接(数据丢失) Table.delete_where() (sqlite_utils/db.py:2948)通过没有atomic()包装的bare self.db.execute()运行其DELETE——与db.py:2944中的Table.delete()进行比较,该方法正确包装。连接保持在transaction=True,因此每个后续的atomic()调用都进入savepoint分支(db.py:430-440),也不会提交。整个过程被重现:db = sqlite_utils.Database("dw.db") db["t"].insert_all([{ "id": i } for i in range(3)], pk="id") db["t"].delete_where("id = ?", [0]) # conn.in_transaction现在为True db["t"].insert({ "id": 50 }) db["u"].insert({ "a": 1 }) db.close() # 重新打开:行是[0, 1, 2]—这个删除、行50和表u都消失了。真的是个很糟糕的bug!我很高兴没有发布这个,尽管至少这是一个我可以在4.0.1补丁版本中修复的bug,而不是迫使我改成5.0的设计缺陷。在37个提示、34次提交和超过1,321 -190的代码变更中,我们逐一处理了整个反馈,同时沿途做了几处其他设计改进。有趣的是,编码代理在处理像这样的困难任务时,其实为同时做其他事情提供了更多机会,因为代理有时需要10-15分钟来处理一个新任务。我出去享受半月湾的独立日游行,偶尔查看一下我的手机,提示Fable下一步。完整的细节在PR中和这个共享的记录中。我切换到我的笔记本电脑进行最终审查,通过GitHub的PR界面进行。最重要的变化与事务处理相关,这是早期RC中的标志性新特性。新的RC现在包括关于新事务模型的全面文档,我将在这里完整引用介绍:这个库中写入数据库的每个方法——insert()、upsert()、update()、delete()、delete_where()、transform()、create_table()、create_index()、enable_fts()及其他——都在其自己的事务中运行并在返回之前提交。您的更改将在方法调用完成后立即保存到磁盘:db = Database("data.db") db.table("news").insert({ "headline": "狗获奖" }) # 新行已保存 - 无需commit() 同样适用于使用db.execute()执行的原始SQL——写入语句在运行后立即提交。您从不需要调用commit(),也不需要关闭数据库来持久化更改。只有两种情况您需要考虑事务:您希望将多个写入操作组合在一起,以便它们要么全部成功,要么全部失败——使用db.atomic()。您正在使用db.begin()手动管理事务,在这种情况下,直到您提交之前,什么都不会被提交-库不会提交您打开的事务。在审查Fable的文档时——我发现首先审查文档编辑是建立对变化初步理解的优秀方式——我发现了一个细节:db.atomic()和每个方法的自动事务是为Python的默认事务处理模式设计的。使用Python 3.12+ sqlite3.connect(..., autocommit=True)或autocommit=False选项创建的连接不被支持,因为在这些连接上commit()和rollback()的行为不同。我承认我没有考虑sqlite-utils将如何响应在Python 3.12中添加的更新版本的autocommit设置。结果是“在这些连接上的行为不同”相当于几乎整个测试套件失败,因此我与模型合作确保这种差异不会破坏库的工作。最后由GPT-5.5进行审查。我曾经认为让一个模型审查另一个模型的工作的想法有些荒谬——这感觉奇怪地迷信。问题是,它确实有效——我开始习惯性地让Anthropic的最佳模型审查OpenAI的工作,反之亦然,因为我发现这常常能产生有趣的结果。我提示Codex Desktop和GPT-5.5 xhigh如下:审查自上次更改以来的变化

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡