* Fix to make this work with independent pysqlite2 package.
* Allow rows to be returned as sqlite3.Row objects instead of simple tuple.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# $Id: file_db.py,v 1.2 2010-02-08 01:46:12 wirawan Exp $
|
# $Id: file_db.py,v 1.3 2010-02-08 20:00:14 wirawan Exp $
|
||||||
#
|
#
|
||||||
# wpylib.db.filedb module
|
# wpylib.db.filedb module
|
||||||
# Created: 20100205
|
# Created: 20100205
|
||||||
@@ -15,7 +15,7 @@ import time
|
|||||||
try:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
except:
|
except:
|
||||||
import pysqlite2 as sqlite3
|
import pysqlite2.dbapi2 as sqlite3
|
||||||
|
|
||||||
class file_rec(tuple):
|
class file_rec(tuple):
|
||||||
pass
|
pass
|
||||||
@@ -36,6 +36,8 @@ class file_table(object):
|
|||||||
float: 'REAL',
|
float: 'REAL',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
indexable_row_type = sqlite3.Row
|
||||||
|
|
||||||
def __init__(self, src_name, table_name='filedb', extra_fields=[]):
|
def __init__(self, src_name, table_name='filedb', extra_fields=[]):
|
||||||
self.src_name = src_name
|
self.src_name = src_name
|
||||||
self.table_name = table_name
|
self.table_name = table_name
|
||||||
@@ -149,7 +151,15 @@ class file_table(object):
|
|||||||
|
|
||||||
def __setitem__(self, filename, newdata):
|
def __setitem__(self, filename, newdata):
|
||||||
"""Updates the metadata on the filename. Any other field than the filename
|
"""Updates the metadata on the filename. Any other field than the filename
|
||||||
can be updated. The filename serves as a unique key here."""
|
can be updated. The filename serves as a unique key here.
|
||||||
|
The newdata can be a hash, like this:
|
||||||
|
|
||||||
|
A_file_table[filename] = {'date': 20041201, 'time': 122144}
|
||||||
|
|
||||||
|
or a list of tuples:
|
||||||
|
|
||||||
|
A_file_table[filename] = [('date': 20041201), ('time': 122144)]
|
||||||
|
"""
|
||||||
if isinstance(newdata, dict) or "keys" in dir(newdata):
|
if isinstance(newdata, dict) or "keys" in dir(newdata):
|
||||||
dnames = newdata.keys()
|
dnames = newdata.keys()
|
||||||
dvals = [ newdata[k] for k in dnames ]
|
dvals = [ newdata[k] for k in dnames ]
|
||||||
@@ -177,6 +187,13 @@ class file_table(object):
|
|||||||
"""Returns the field names of the table of the latest query."""
|
"""Returns the field names of the table of the latest query."""
|
||||||
return [ z[0] for z in self.dbc.description ]
|
return [ z[0] for z in self.dbc.description ]
|
||||||
|
|
||||||
|
def row_kind(self, kind=None):
|
||||||
|
if kind:
|
||||||
|
self.db.row_factory = kind
|
||||||
|
# We will reload the cursor to account for the new factory
|
||||||
|
self.dbc = self.db.cursor()
|
||||||
|
return self.db.row_factory
|
||||||
|
|
||||||
|
|
||||||
def md5_digest_file(filename):
|
def md5_digest_file(filename):
|
||||||
"""Digests the content of a file."""
|
"""Digests the content of a file."""
|
||||||
|
|||||||
Reference in New Issue
Block a user