Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

sqlite-utils:将数据导入 SQLite 进行分析的好方法

Posted on 2022-05-13

你好!这是一篇关于我最近发现的名为sqlite-utils的好工具的快速帖子,来自工具类别。

最近我想用我的 Shopify 商店的数据做一些基本的数据分析。所以我想我会查询 Shopify API 并将我的数据导入 SQLite,然后我可以进行查询以获得我想要的图表。

但这似乎是很多无聊的工作,就像我必须编写一个模式并编写一个 Python 程序一样。因此,我四处寻找解决方案,并找到了sqlite-utils ,这是一个旨在轻松将任意数据导入 SQLite 以对数据进行数据分析的工具。

sqlite-utils 自动生成模式

Shopify 数据有大约十亿个字段,我真的不想为它输入架构。 sqlite-utils解决了这个问题:如果我有一个 JSON 订单数组,我可以创建一个包含该数据的新 SQLite 表,如下所示:

 import sqlite_utils orders = ... # (some code to get the `orders` array here) db = sqlite_utils.Database('orders.db') db['shopify_orders'].insert_all(orders)

如果有新字段(使用alter ),您可以更改架构

接下来,我遇到了一个问题,在下载的第 5 页上,JSON 包含一个我以前从未见过的新字段。

幸运的是, sqlite-utils想到了这一点:有一个alter标志,它将更新表的模式以包含新字段。 “`

这是代码的样子

db['shopify_orders'].insert_all(orders, alter=True)

您可以对现有行进行重复数据删除(使用upsert )

接下来我遇到了一个问题,有时在进行同步时,我会从 API 下载数据,其中一些是新的,而另一些则不是。

所以我想做一个“upsert”,如果项目不存在,它只创建新行。 sqlite-utils也想到了这个,还有upsert方法。

为此,您必须指定主键。对我来说那是pk="id" 。这是我的最终代码的样子:

 db['shopify_orders'].upsert_all( orders, pk="id", alter=True )

还有一个命令行工具

到目前为止,我已经讨论过使用sqlite-utils作为库,但还有一个非常有用的命令行工具。

例如,这会将来自plants.csv的数据插入到plants表中:

 sqlite-utils insert plants.db plants plants.csv --csv

格式转换

我还没有尝试过,但这是帮助文档中的一个很酷的示例,说明如何进行格式转换,例如将字符串转换为浮点数:

 sqlite-utils insert plants.db plants plants.csv --csv --convert ' return { "name": row["name"].upper(), "latitude": float(row["latitude"]), "longitude": float(row["longitude"]), }'

这似乎对 CSV 非常有用,默认情况下,如果您不进行此转换,它通常会将数字数据解释为字符串。

元数据库似乎也不错

一旦我在 SQLite 中获得了所有数据,我就需要一种用它来绘制图形的方法。我想要一些仪表板,所以我最终使用了Metabase ,一个开源商业智能工具。我发现它非常简单,它似乎是一种将 SQL 查询转换为图形的非常简单的方法。

整个设置(sqlite-utils + metabase + SQL)感觉比我之前的设置更容易使用,我之前有一个自定义的 Flask 网站,它使用 plotly 和 pandas 来绘制图形。

就这样!

我对sqlite-utils感到非常高兴,它非常易于使用,并且可以满足我的所有需求。

原文: https://jvns.ca/blog/2022/05/12/sqlite-utils–a-nice-way-to-import-data-into-sqlite/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme