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
def add_fk1(): from book.models import Publisher, Book p = Publisher.objects.get(name='机械工业出版社') b = Book() b.name = 'Python 高并发实战' b.publisher_state = 2 b.desc = 'Good' b.publisher = p # ForeignKey b.save()
def _save_book_db(self, info): logger.info('_save_book_db') book = Book.normal.filter(title=info['name']).first() if not book: book = Book() book.title = info.get('name') book.author_id = self._save_or_get_author_db(info).id book.desc = info.get('desc') book.markeup = info.get('markeup') book.latest_chapter = info.get('latest_chapter') book.origin_addr = self.url book.save() return book
def _save_comic_db(self, info): logger.info('_save_comic_db') comic = Book.normal.filter(title=info['name'], book_type=BOOK_TYPE_DESC.Comic).first() if not comic: comic = Book() comic.book_type = BOOK_TYPE_DESC.Comic comic.title = info.get('name') comic.author_id = self._save_or_get_author_db(info) comic.desc = info.get('desc') comic.markeup = info.get('markeup') comic.title = info.get('name') comic.origin_addr = self.url comic.save() if isinstance(info['cover'], list): logger.info('_save_comic_db run loop') for index, url in enumerate(info['cover'], 1): info = self._save_image_disk(url) img, flag = Image.normal.get_or_create( img_type=IMAGE_TYPE_DESC.COVER, key=info['id'], name=info['name']) logger.info('_save_comic_db run loop,{}==={}==={}'.format( comic, info, img)) comic.cover.add(img) else: info = self._save_image_disk(info['cover']) # img = Image(img_type=IMAGE_TYPE_DESC.COMIC_COVER, key=info['id'], name=info['name']).save() img, flag = Image.normal.get_or_create( img_type=IMAGE_TYPE_DESC.COVER, key=info['id'], name=info['name']) logger.info('_save_comic_db run singal,{}==={}==={}'.format( comic, info, img)) comic.cover.add(img) comic.save() return comic