我在做什么:
有没有pythonic方法来做到这一点?我想知道整个过程,但我会提出一些指导性问题:
如果抓取与api的方法不同,请解释如何以及为什么
以下是一个例子:
API返回:
{data: {
name: "<b>asd</b>",
story: "tame",
story2: "adjet"
}
}
你想做什么:
(并考虑可以创建多个对象和多个传入数据源)
你将如何构建这个过程?所有类/方法的界面对我来说都足够了,没有任何解释。
答案 0 :(得分:1)
我应该上几节课?
在Python中,没有必要使用类。类是管理复杂性的方法。如果您的解决方案不复杂,请使用函数(或者,如果是一次性解决方案,可以使用模块级代码)
如果抓取与api的方法不同,请解释如何以及为什么
我更喜欢用modularity和principle of least knowledge来组织我的代码,并在模块系统的各个部分之间定义清晰的接口。
您可以使用模块(函数或类)来获取信息,它应该返回包含指定字段的字典,无论它究竟是什么。
另一个模块也应该处理字典并返回字典(例如)。
第三个模块可以将该字典中的信息保存到数据库中。
很有可能,这个计划远非您需要或想要的,您应该自己开发模块系统。
清洁名称
创建一个name_story对象
设置
name_story.name = dict['data']['name']
设置
name_story.story = dict['data']['story'] + dict['data']['story2']
如果你想通过点访问对象的属性(正如你在3和4项中指定的那样,你可以使用python namedtuple或普通的python类。如果索引访问对你来说没问题,可以使用python dictionary
对于namedtuple,它将是:
from collections import namedtuple
NameStory = namedtuple('NameStory', ['name', 'story'])
name_story1 = NameStory(name=dict['data']['name'], story=dict['data']['story'] + dict['data']['story2'])
name_story2 = NameStory(name=dict2['data']['name'], story=dict2['data']['name'])
如果你选择了字典,那就更容易了:
name_story = {
'name': dict['data']['name'],
'story': dict['data']['story'] + dict['data']['story2'],
}
将name_story保存到数据库
这是一个更复杂的问题。
您可以使用原始SQL。具体说明取决于您的数据库。 Google for&#39; python sqlite&#39;或者&#39; python postgresql&#39;或者你想要什么,有很多很好的教程。
或者您可以使用python ORM之一:
强烈建议不要覆盖python内置类型(list
,dict
,str
等),就像在此行中所做的那样:
name_story.name = dict['data']['name']