Python Peewee从一个嵌套字典中获取具有特定列的表
我有一个特定函数的输出,看起来像这样(这是谷歌分析数据,给我的网站用户的反馈) 关于活动的注意事项:活动的数量并不总是两个,有时一个用户执行了20个活动,而另一些时候他们只执行了1个,我已经尽可能简单地给出了输出(一个活动被分类为“页面视图”或“事件”,但决不能两者兼而有之) 关于原始函数的注意事项:原始函数(给出GA输出的函数)在for循环中运行,对于每个用户,所有用户的数据都存储在一个大列表中。需要明确的是,上述数据仅针对一个用户 预期输出:我想要的是一个包含两个表的数据库(如下所示)。我不知道如何为很多用户做到这一点,这是我需要帮助的地方。我希望能够参加会议,并对我们的用户提供反馈 表1:Python Peewee从一个嵌套字典中获取具有特定列的表,python,google-analytics-api,peewee,Python,Google Analytics Api,Peewee,我有一个特定函数的输出,看起来像这样(这是谷歌分析数据,给我的网站用户的反馈) 关于活动的注意事项:活动的数量并不总是两个,有时一个用户执行了20个活动,而另一些时候他们只执行了1个,我已经尽可能简单地给出了输出(一个活动被分类为“页面视图”或“事件”,但决不能两者兼而有之) 关于原始函数的注意事项:原始函数(给出GA输出的函数)在for循环中运行,对于每个用户,所有用户的数据都存储在一个大列表中。需要明确的是,上述数据仅针对一个用户 预期输出:我想要的是一个包含两个表的数据库(如下所示)。我不
SessionId User dataSource deviceCategory platform sessionDuration
12345 123 web desktop windows 00:15:12
...
表2:
ActivityTime pageTitle pagePath EventCategory eventCount eventLabel eventAction
2019-12-15 20:30:12 domain webpage NaN NaN NaN NaN
2019-12-15 20:45:47 NaN NaN Aut 1 (not_set) LoggedIn
PS:我知道这看起来很复杂,但很简单:我得到了一个嵌套字典的列表,我想用Peewee将其放入数据库,以便能够进行查询
如果我误解了什么,请让我知道
我想PRAGMA
可以做到这一点,然后我应该知道如何将所有这些数据存储为.db文件(我想)?
谢谢:)我建议将此数据存储为JSON文件,使用内置的
JSON
模块加载此数据,然后执行任何操作:
您的JSON:
{
"sampleRate": 1,
"sessions": [
{
"activityTime": "2020-01-08T15:48:38.012671Z",
"activityType": "PAGEVIEW",
"campaign": "(not set)",
"channelGrouping": "Direct",
"customDimension": [
{
"index": 1
}
],
"hostname": "company.domain.com",
"keyword": "(not set)",
"landingPagePath": "/login",
"medium": "(none)",
"pageview": {
"pagePath": "/login",
"pageTitle": "titleofthepage"
},
"source": "(direct)"
},
{
"activityTime": "2020-01-08T15:48:37.915105Z",
"activityType": "EVENT",
"campaign": "(not set)",
"channelGrouping": "Direct",
"customDimension": [
{
"index": 1
}
],
"event": {
"eventAction": "Successfully Logged In",
"eventCategory": "Auth",
"eventCount": "1",
"eventLabel": "(not set)"
},
"hostname": "company.domain.com",
"keyword": "(not set)",
"landingPagePath": "/login",
"medium": "(none)",
"source": "(direct)"
}
],
"dataSource": "web",
"deviceCategory": "desktop",
"platform": "Windows",
"sessionDate": "2020-01-08"
}
Python代码:
import json
with open('data.json', 'r', encoding='utf-8') as fw:
obj = json.load(fw) # your nested dictionary
# peewee mapping
# or
# db insertion
# or
# some other stuff
pass
非常感谢。我正在测试它。我仍然迷路了,我不知道如何告诉程序去查看列表中嵌套字典的这一特定部分,使其成为一个对象,对于列表中的每次迭代,将数据添加到数据库表中。您应该通过dict进行迭代,有时使用递归来实现嵌套值。看看这些。
import json
with open('data.json', 'r', encoding='utf-8') as fw:
obj = json.load(fw) # your nested dictionary
# peewee mapping
# or
# db insertion
# or
# some other stuff
pass