【发布时间】:2021-08-19 23:38:57
【问题描述】:
我正在使用 requests 访问 HTTP REST API。 API 返回我想要解析然后提交到 sqlite3 数据库的 JSON。一个 JSON 响应可能大致如下所示:
{
entry1:
{
key1:value1,
key2:value2
},
entry2:
{
key2:value2
}
}
另一个可能如下所示:
{
entry3:
{
key1:value1,
key2:value2,
key3:value3
},
}
我想将其保存到如下表格中:
+--------+--------+--------+--------+
| entry | key1 | key2 | key3 |
+--------+--------+--------+--------+
| entry1 | value1 | value2 | NULL |
+--------+--------+--------+--------+
| entry2 | NULL | value2 | NULL |
+--------+--------+--------+--------+
| entry3 | value1 | value2 | value3 |
+--------+--------+--------+--------+
实际上,我正在循环访问数以千计的条目。我的问题如下:
我不知道所有可能出现的键 key1、key2、key3 ... key_n,因为 API 没有记录这一点。对我来说,对整个数据集进行一次循环只是为了弄清楚在向 API 的每个请求收费时可能可能出现哪些列也太昂贵了。
有一个明显的解决方案,即检查当前请求的所有条目的列是否存在于我的表中,并根据需要向表中添加列。
我的问题有两个:
- 我应该在
pandas.DataFrame的python 代码中执行上述检查,还是应该使用SQL 命令直接提交到我的sqlite3数据库,从而绕过在运行时将DataFrame存储在我的RAM 中的需要?在sqlite3中添加这样的列(即使用ALTER TABLE语句)是不好的做法吗? - 我是否忽略了解决此问题的其他(可能更好的)方法?
【问题讨论】:
-
你看过“JSON1”扩展sqlite.org/json1.html
-
@JonSG 谢谢,但是在处理和操作 JSON 方面,python 更加通用