X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=reload_db.py;h=ee51b392aedb6048c6cf4dada016ae7cb7f930dd;hb=ed51875bac3a29648ad05b388c8bbf3bb3b886fe;hp=97012a8c0d3cfa3dcd733d3f56743b2eac08d714;hpb=386e1a4f33ce240cea06ef0e7aa4d85dd1c9a104;p=xsetbg.git diff --git a/reload_db.py b/reload_db.py index 97012a8..ee51b39 100755 --- a/reload_db.py +++ b/reload_db.py @@ -10,25 +10,11 @@ __copyright__ = "Copyright (C) 2007-2015 PhiloSoft Design" __license__ = "GNU GPL" import sys -from sqlobject import SQLObjectNotFound, sqlhub +from sqlobject import SQLObjectNotFound from sqlobject.sqlbuilder import Insert from xsetbg_conf import xsetbg_conf -from xsetbg_db import SqliteSequence, XSetBg, xsetbg_db +from xsetbg_db import recreate_db, SQLiteMassInsert -fs_encoding = xsetbg_conf.get("images", "fs_encoding") -dump_file = open(sys.argv[1], 'rU') - -if xsetbg_db: - try: - seq = SqliteSequence.byName(XSetBg.sqlmeta.table) - except SQLObjectNotFound: - SqliteSequence(name=XSetBg.sqlmeta.table, seq=0) - else: - seq.seq = 0 # Reset autoincrement counter - xsetbg_db.clearTable() -else: - xsetbg_db = XSetBg - xsetbg_db.createTable() def convert_str(s): if s == "None": @@ -36,29 +22,34 @@ def convert_str(s): else: return int(float(s)) -connection = xsetbg_db._connection - -connection.query("PRAGMA synchronous=OFF") -connection.query("PRAGMA count_changes=OFF") -connection.query("PRAGMA journal_mode=MEMORY") -connection.query("PRAGMA temp_store=MEMORY") -txn = connection.transaction() -sqlhub.processConnection = txn - -for line in dump_file: - id, timestamp, filename = line.strip().split(None, 2) - id = convert_str(id) - timestamp = convert_str(timestamp) - if fs_encoding != 'utf-8': - filename = filename.decode(fs_encoding).encode('utf-8') - values = {'last_shown': timestamp, 'full_name': filename} - if id: - values['id'] = id - query = txn.sqlrepr(Insert(XSetBg.sqlmeta.table, values=values)) - txn.query(query) - -txn.commit() -sqlhub.processConnection = connection +fs_encoding = xsetbg_conf.get("images", "fs_encoding") +dump_file = open(sys.argv[1], 'rU') +xsetbg_db = recreate_db() +count_new = count_old = 0 + +with SQLiteMassInsert() as txn: + for line in dump_file: + id, timestamp, filename = line.strip().split(None, 2) + id = convert_str(id) + timestamp = convert_str(timestamp) + filename = filename.decode(fs_encoding) + try: + row = xsetbg_db.byFull_name(filename) + except SQLObjectNotFound: + values = {'last_shown': timestamp, + 'full_name': filename.encode('utf-8')} + if id: + values['id'] = id + query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table, values=values)) + txn.query(query) + count_new += 1 + else: + assert id is None or row.id == id + assert row.last_shown == timestamp + count_old += 1 dump_file.close() + +print "New images:", count_new +print "Existing images:", count_old