db export to make files smaller
This commit is contained in:
@@ -33,6 +33,8 @@ def setup_options():
|
|||||||
help="Depth of summarization for --du.")
|
help="Depth of summarization for --du.")
|
||||||
parser.add_argument("--exportDesc",action="store",dest="export_descriptions",default=None,
|
parser.add_argument("--exportDesc",action="store",dest="export_descriptions",default=None,
|
||||||
help="Walk through folders, and write "+DESCFILE+" in each folder. Format descriptions with {desc} {width}x{height} {red} {green} {blue} {Bred} {Bgreen} {Bblue} {size} {date} {name} {tags}")
|
help="Walk through folders, and write "+DESCFILE+" in each folder. Format descriptions with {desc} {width}x{height} {red} {green} {blue} {Bred} {Bgreen} {Bblue} {size} {date} {name} {tags}")
|
||||||
|
parser.add_argument("--export",action="store",dest="exportfile",default=None,
|
||||||
|
help="Export database to new sqlite database.")
|
||||||
parser.add_argument("-f",action="store",dest="sqlfile",default=SQLFILE,
|
parser.add_argument("-f",action="store",dest="sqlfile",default=SQLFILE,
|
||||||
help="SQL file name to use [%(default)s]")
|
help="SQL file name to use [%(default)s]")
|
||||||
parser.add_argument("-i",action="store",dest="importfile",default=None,
|
parser.add_argument("-i",action="store",dest="importfile",default=None,
|
||||||
@@ -85,7 +87,8 @@ def setup_options():
|
|||||||
options.diskused:
|
options.diskused:
|
||||||
options.add=not options.add
|
options.add=not options.add
|
||||||
if options.tag or\
|
if options.tag or\
|
||||||
options.importfile:
|
options.importfile or\
|
||||||
|
options.exportfile:
|
||||||
options.add=False
|
options.add=False
|
||||||
return options
|
return options
|
||||||
|
|
||||||
@@ -98,8 +101,8 @@ def createdb(sqlfile):
|
|||||||
width INTEGER,height INTEGER,\
|
width INTEGER,height INTEGER,\
|
||||||
fingerprint TEXT,sharpness NUMERIC,\
|
fingerprint TEXT,sharpness NUMERIC,\
|
||||||
R REAL,G REAL, B REAL, BR REAL, BG REAL, BB REAL)')
|
R REAL,G REAL, B REAL, BR REAL, BG REAL, BB REAL)')
|
||||||
db.execute('CREATE TABLE list (file TEXT,hash TEXT,date INTEGER,size INTEGER)')
|
db.execute('CREATE TABLE list (file TEXT PRIMARY KEY,hash TEXT,date INTEGER,size INTEGER)')
|
||||||
db.execute('CREATE TABLE tags (tag TEXT,hash TEXT)')
|
db.execute('CREATE TABLE tags (hash TEXT PRIMARY KEY,tag TEXT)')
|
||||||
conn.commit()
|
conn.commit()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -957,6 +960,25 @@ def import_metadata(options):
|
|||||||
|
|
||||||
print("Imported %d metadata, %d tags." % (count,tagsafter-tagsbefore))
|
print("Imported %d metadata, %d tags." % (count,tagsafter-tagsbefore))
|
||||||
|
|
||||||
|
def export_database(options):
|
||||||
|
""" export data to new sqlite file. Minimize file size of sqlite."""
|
||||||
|
if not os.path.exists(options.exportfile):
|
||||||
|
createdb(options.exportfile)
|
||||||
|
|
||||||
|
conn=sqlite3.connect(options.sqlfile)
|
||||||
|
conn.text_factory=str
|
||||||
|
db=conn.cursor()
|
||||||
|
db.execute("ATTACH ? as toDB", (options.exportfile, ))
|
||||||
|
db.execute("INSERT OR REPLACE INTO toDB.list SELECT * FROM main.list")
|
||||||
|
db.execute("INSERT OR REPLACE INTO toDB.data SELECT * FROM main.data")
|
||||||
|
db.execute("INSERT OR IGNORE INTO toDB.tags SELECT * FROM main.tags")
|
||||||
|
conn.commit()
|
||||||
|
count=db.execute("SELECT COUNT(hash) FROM toDB.list").fetchall()[0][0]
|
||||||
|
metacount=db.execute("SELECT COUNT(hash) FROM toDB.data").fetchall()[0][0]
|
||||||
|
tagscount=db.execute("SELECT COUNT(hash) FROM toDB.tags").fetchall()[0][0]
|
||||||
|
|
||||||
|
print("Exported %d files, %d metadata, %d tags." % (count,metacount,tagscount))
|
||||||
|
|
||||||
def check_path(path,opt):
|
def check_path(path,opt):
|
||||||
""" return relative path name to DB if real path doesnt exist """
|
""" return relative path name to DB if real path doesnt exist """
|
||||||
if os.path.isfile(path):
|
if os.path.isfile(path):
|
||||||
@@ -1036,6 +1058,9 @@ def main():
|
|||||||
if options.importfile:
|
if options.importfile:
|
||||||
print("Importing metadata")
|
print("Importing metadata")
|
||||||
import_metadata(options)
|
import_metadata(options)
|
||||||
|
if options.exportfile:
|
||||||
|
print("Exporting database")
|
||||||
|
export_database(options)
|
||||||
if options.import_descriptions:
|
if options.import_descriptions:
|
||||||
print("Import descriptions")
|
print("Import descriptions")
|
||||||
import_descriptions(options)
|
import_descriptions(options)
|
||||||
|
|||||||
Reference in New Issue
Block a user