Beispiel #1
0
    def save_book_info_to_db(self, info):
        '''保存书本信息到数据库'''
        logging.info('保存<<{}>>信息到数据库'.format(info['name']))

        author = self.save_or_get_author_db(info)

        book = self.book
        if not self.book:
            lock.acquire()
            try:
                books = Book.normal.filter(title=info['name'],
                                           author=author,
                                           book_type=self.book_type)
                if books.count() > 0:
                    book = books[0]
                    for book in books[1:]:
                        book.delete()
                else:
                    book = Book()

                if not book.desc:
                    book.book_type = self.book_type
                    book.title = info.get('name')
                    book.author = author
                    book.desc = info.get('desc')
                    book.markeup = info.get('markeup')
                    book.origin_addr = self.url
                    book.on_shelf = self.on_shelf
                    book.save()
            finally:
                lock.release()
        self.book = book
        return book