From 5b3e47334d2e6985d61e5d8abaac87cc23af507d Mon Sep 17 00:00:00 2001 From: ygl Date: Tue, 1 Nov 2016 14:06:20 +0800 Subject: [PATCH] better error handling --- _sqlite3.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/_sqlite3.py b/_sqlite3.py index 59698a0..1816275 100644 --- a/_sqlite3.py +++ b/_sqlite3.py @@ -655,13 +655,16 @@ class Connection(object): def backup(self, target_conn_obj): db_name = _ffi.new("char []", "main") bk_obj = _lib.sqlite3_backup_init(target_conn_obj._db, db_name, self._db, db_name) - if bk_obj: + if bk_obj != _ffi.NULL: rc = _lib.SQLITE_OK while rc == _lib.SQLITE_OK or rc == _lib.SQLITE_BUSY or rc == _lib.SQLITE_LOCKED: rc = _lib.sqlite3_backup_step(bk_obj, 100) if rc == _lib.SQLITE_OK or rc == _lib.SQLITE_BUSY or rc == _lib.SQLITE_LOCKED: _lib.sqlite3_sleep(5) - _lib.sqlite3_backup_finish(bk_obj) + if rc != _lib.SQLITE_DONE: + raise self._get_exception(rc) + else: + _lib.sqlite3_backup_finish(bk_obj) class Cursor(object):