def upsert_paper(info, author_id): try: with db_session: publisher_id = info['publisher_id'] if publisher_id: publisher = Publisher.get(publisher_id=publisher_id) if publisher: pass else: publisher = Publisher(publisher_id=publisher_id) publisher.name = info['publishername'] except: pass with db_session: p = Paper.get(paper_id=info['paper_id']) if p: logger.debug('paper has existed, paper_id=%s', info['paper_id']) return paper = Paper(paper_id=info['paper_id']) paper.title = info['title'] paper.abstract = info['abstract'] paper.cite_num = info['cite_num'] paper.cited_num = info['cited_num'] publisher_id = info['publisher_id'] if publisher_id: publisher = Publisher.get(publisher_id=publisher_id) if publisher: paper.publisher = publisher if author_id is None: return a = Author.get(author_id=author_id) if a: paper.authors.add(a) else: a_info = api.get_author(author_id) author = Author(author_id=a_info['author_id']) author.name = a_info['name'] author.image_url = a_info['image_url'] author.organization = a_info['organization'] author.home_page = a_info['home_page'] author.paper_count = a_info['paper_count'] author.citied_count = a_info['cited_count'] paper.authors.add(author)
def write_db(self): print "len of entry list " + str(len(self.entry_list)) for entry in self.entry_list: paper = Paper() if entry.has_key("id"): paper.id = entry["id"] if entry.has_key("type"): paper.type = entry["type"] if entry.has_key("title"): paper.title = entry["title"] if entry.has_key("author"): paper.authors = entry["author"] if entry.has_key("year"): paper.year = int(entry["year"]) if entry.has_key("journal"): paper.journal = entry["journal"] if entry.has_key("booktitle"): paper.book_title = entry["booktitle"] if entry.has_key("publisher"): paper.publisher = entry["publisher"] if entry.has_key("institution"): paper.institution = entry["institution"] if entry.has_key("volume"): paper.volume = int(entry["volume"]) if entry.has_key("number"): paper.number = int(entry["number"]) if entry.has_key("pages"): paper.pages = entry["pages"] if entry.has_key("url"): paper.url = entry["url"] if entry.has_key("doi"): paper.doi = entry["doi"] if entry.has_key("isbn"): paper.isbn = entry["isbn"] paper.save()