add new method: backup to Connection

master
ygl 9 years ago
parent 30af8d6a6d
commit 8f68e1d8b4
  1. 11
      _sqlite3.py
  2. 8
      _sqlite3_build.py

@ -652,6 +652,17 @@ class Connection(object):
if rc != _lib.SQLITE_OK:
raise OperationalError("Error enabling load extension")
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:
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)
class Cursor(object):
__initialized = False

@ -109,6 +109,7 @@ typedef ... sqlite3;
typedef ... sqlite3_stmt;
typedef ... sqlite3_context;
typedef ... sqlite3_value;
typedef ... sqlite3_backup;
typedef int64_t sqlite3_int64;
typedef uint64_t sqlite3_uint64;
@ -225,8 +226,15 @@ const void *sqlite3_value_text16le(sqlite3_value*);
const void *sqlite3_value_text16be(sqlite3_value*);
int sqlite3_value_type(sqlite3_value*);
int sqlite3_value_numeric_type(sqlite3_value*);
sqlite3_backup* sqlite3_backup_init(sqlite3*, const char*, sqlite3*, const char*);
int sqlite3_backup_step(sqlite3_backup*, int);
int sqlite3_backup_finish(sqlite3_backup*);
int sqlite3_backup_remaining(sqlite3_backup*);
int sqlite3_backup_pagecount(sqlite3_backup*);
int sqlite3_sleep(int);
""")
def _has_load_extension():
"""Only available since 3.3.6"""
unverified_ffi = _FFI()

Loading…
Cancel
Save