From 8023b175e35eeebb75d91b0cb58ed6abf785f48b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 10 Jun 2008 22:51:57 -0700 Subject: [PATCH] Handle multiple instances of an ebook format file when doing recursive imports --- src/calibre/library/database.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/calibre/library/database.py b/src/calibre/library/database.py index ec5040176e..580e4a327d 100644 --- a/src/calibre/library/database.py +++ b/src/calibre/library/database.py @@ -1454,8 +1454,13 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE; stream.seek(0, 2) usize = stream.tell() stream.seek(0) - self.conn.execute('INSERT INTO data(book, format, uncompressed_size, data) VALUES (?,?,?,?)', - (id, ext, usize, sqlite.Binary(compress(stream.read())))) + data = sqlite.Binary(compress(stream.read())) + try: + self.conn.execute('INSERT INTO data(book, format, uncompressed_size, data) VALUES (?,?,?,?)', + (id, ext, usize, data)) + except sqlite.IntegrityError: + self.conn.execute('UPDATE data SET uncompressed_size=?, data=? WHERE book=? AND format=?', + (usize, data, id, ext)) self.conn.commit() def import_book_directory_multiple(self, dirpath):