本文整理汇总了Python中models.Author.get_or_insert方法的典型用法代码示例。如果您正苦于以下问题:Python Author.get_or_insert方法的具体用法?Python Author.get_or_insert怎么用?Python Author.get_or_insert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类models.Author
的用法示例。
在下文中一共展示了Author.get_or_insert方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: scrape_pubmed
# 需要导入模块: from models import Author [as 别名]
# 或者: from models.Author import get_or_insert [as 别名]
def scrape_pubmed(disease, query):
publication_list_url = "%s&term=%s&retmax=%s" % (base_url, query, ret_max)
dom = get_dom(publication_list_url)
count = int(extract_value(get_text(dom, "Count"), "Count"))
num_results = min(ret_max, count)
for i in range(num_results):
#retrieve the first xml tag (<tag>data</tag>) that the parser finds with name tagName:
publication_id = get_value(dom, "Id", i)
publication_url = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&id=%s" % publication_id
publication_dom = get_dom(publication_url)
# extract features
title = get_value(publication_dom, "ArticleTitle")
affiliation = get_value(publication_dom, "Affiliation")
year = int(get_value(publication_dom, "Year"))
month = int(get_value(publication_dom, "Month"))
day = int(get_value(publication_dom, "Day"))
pub_date = date(year, month, day)
# get all author_names
author_names = []
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
def handleLastName(lastName):
lastNameOut = getText(lastName.childNodes)
return lastNameOut
def handleForeName(foreName):
foreNameOut = getText(foreName.childNodes)
return foreNameOut
def processAuthorElem(elem):
if len(elem.getElementsByTagName("LastName")) != 0:
last_name = handleLastName(elem.getElementsByTagName("LastName")[0])
fore_name = handleForeName(elem.getElementsByTagName("ForeName")[0])
author_names.append("%s, %s" % (last_name, fore_name))
def processAuthors(dom):
author_elems = dom.getElementsByTagName("Author")
for elem in author_elems:
processAuthorElem(elem)
processAuthors(publication_dom)
# create author models
for name in author_names:
author = Author.get_or_insert(name, name=name)
# TODO: fix this so it's appending instead of overwriting
author.diseases = [disease]
author.put()
# create publication model
pub = Publication.get_or_insert(publication_id, pubmed_id=publication_id)
pub.title = title
pub.publication_date = pub_date
pub.author_names = author_names
pub.affiliation = affiliation
# TODO: fix this so it's appending instead of overwriting
pub.diseases = [disease]
pub.put()