我主要致力于Datasette Enrichments并继续探索sqlite-chronicle所带来的可能性。
丰富活动
我认为这是相当长一段时间以来最大的新数据集,并且它完全作为插件实现。
我在Datasette Enrichments:一个用于增强数据的新插件框架(附带YouTube 视频演示)中详细描述了这些内容。简短版本:您现在可以安装插件,这些插件可以通过对选定的行运行转换(或数据获取)来“丰富”数据 – 地理编码地址,或执行 GPT 提示,或应用正则表达式。
datasette-enrichments插件提供了运行这些丰富功能的机制。然后其他插件可以依赖它并定义各种有趣的选项来丰富和转换数据。
到目前为止,我已经构建了其中四个,并且编写了一些广泛的文档来帮助人们构建更多。我很高兴看到人们如何使用这个初始基础并进一步构建。
数据集评论
Alex Garcia 发布了datasette-comments的第一个版本,作为我们持续合作构建 Datasette Cloud 的一部分。
他在 Datasette Cloud 博客上写了相关内容:使用 datasette-comments 注释和探索您的数据。
这是我多年来一直期待的另一项功能:该插件允许您在 Datasette 实例中的各个行上留下评论,以便与其他人协作在数据中查找故事。
sqlite-chronicle 和 datasette-chronicle
早在 9 月份,我就在周记中第一次写了有关sqlite-chronicle的文章。本周,受到嵌入工作的启发,我花了更多的时间并发布了0.2 版本。
sqlite-chronicle
是一个 Python 库,它实现了一种 SQL 模式,其中表可以创建一个_chronicle_tablename
伴随表,然后使用针对主表的触发器进行更新。
Chronicle 表在主表中的每一行都有一个影子行,复制其主键,然后存储added_ms
和updated_ms
的毫秒时间戳列、整数version
列和deleted
布尔指示器。
目标是记录最后一次插入或更新行的时间,并用原子递增的version
ID 表示整个表的版本。
这可以实现各种有趣的潜在用例:
- 识别自先前记录的版本以来已更新或插入的行
- 将一个表与另一个表同步,仅更新/插入/删除自上次以来已更改的行
- 运行仅考虑以某种方式更改的行的计划任务
与丰富的相关性在于,我想实现一种“持久”丰富的形式 – 一种配置为针对新的或更新的行重复运行的丰富,例如对新地址进行地理编码。
为此,我需要一种机制来识别哪些行已经被丰富,哪些行需要再次丰富。 sqlite-chronicle
是我目前提供该机制的计划。
它仍然是相当实验性的。我最近发现INSERT OR REPLACE INTO
查询的行为与我预期的不符,请参阅问题 #7 。
我还启动了一个新插件来配合该功能: datasette-chronicle ,它为 Datasette 添加了两个功能:
- 为具有正确权限的用户提供“启用/禁用历史记录跟踪”表操作,可在 Datasette UI 中使用该操作来打开和关闭特定表的历史记录跟踪
- 对于启用了历史记录的表,可以使用
?_since=VERSION
查询字符串参数来过滤表,仅显示自指定版本以来已更改的行
我正在demos.datasette.cloud
上的文档表上运行插件 – 请参阅_chronicle_documents了解结果。该表是通过 GitHub 计划操作和 Datasette API 填充的,如Datasette Cloud API 入门中所述 – 这也是我第一次发现前面描述的INSERT OR REPLACE INTO
问题的地方。
新闻编辑室机器人
几周前,我与尼基塔·罗伊 (Nikita Roy) 在新闻播客中录制了新闻室机器人人工智能 ( Newsroom Robots AI) 的一集。
她把我们的谈话分成两集:
- Simon Willison(第一部分):打破 OpenAI 的新功能和大型语言模型的安全风险– 我最终将其用作两篇博客文章的基础:
- Simon Willison(第二部分):Datasette 如何帮助进行调查报告,其中包含迄今为止我设法制作的最好的 Datasette 音频描述。
sqlite-utils 3.36
引用发行说明。
- 支持在SQLite STRICT 模式下创建表。谢谢,泰姬·卡特拉。 ( #344 )
- CLI 命令
create-table
、insert
和upsert
现在都接受--strict
选项。- 可以创建表的 Python 方法 –
table.create()
和insert/upsert/insert_all/upsert_all
现在都接受可选的strict=True
参数。- 在转换表时,
transform
命令和table.transform()
方法保留严格模式。sqlite-utils create-table
命令现在分别接受str
、int
和bytes
作为text
、integer
和blob
的别名。 ( #606 )
Taj Khattra 对--strict
和strict=True
选项的贡献是我理想的拉取请求的一个很好的例子:干净的实现、全面的测试和对文档的深思熟虑的更新全部捆绑在一起。
发布
- sqlite-utils 3.36 – 2023-12-08
用于操作 SQLite 数据库的 Python CLI 实用程序和库 - 数据集传单-geojson 0.8.1 – 2023-12-07
Datasette 插件,用 Leaflet 地图替换任何 GeoJSON 列值。 - 数据集编年史 0.2 – 2023-12-06
针对 Datasette 中的表启用 sqlite-chronicle - 数据集丰富-jinja 0.1 – 2023-12-06
用于评估 Jinja 沙箱中模板的数据集丰富 - sqlite-chronicle 0.2.1 – 2023-12-06
使用触发器来跟踪 SQLite 表中的行何时被更新或删除 - 数据集丰富-gpt 0.3 – 2023-12-01
使用 OpenAI 的 GPT 模型分析行数据的数据集丰富 - 数据集统计 0.2.1 – 2023-11-30
Datasette 的 SQL 统计函数 - 数据集丰富-opencage 0.1 – 2023-11-30
使用 OpenCage 进行地理编码和反向地理编码 - 数据集丰富-re2 0.1 – 2023-11-30
使用由 re2 支持的正则表达式丰富数据 - 数据集丰富 0.2 – 2023-11-29
用于对 Datasette 中存储的数据运行丰富的工具 - 数据集-pretty-json 0.3 – 2023-11-28
Datasette 插件,可以漂亮地打印任何有效 JSON 对象或数组的列值
TIL
- 使用 MacWhisper 抓取 YouTube 视频片段的文字记录– 2023-12-01
- Pyodide 中的密码学– 2023-11-26
- 在 ReadTheDocs 上运行 pip install ‘.[docs]’ – 2023-11-24
原文: http://simonwillison.net/2023/Dec/8/weeknotes/#atom-everything