本文整理汇总了Python中sqlite3.register_converter方法的典型用法代码示例。如果您正苦于以下问题:Python sqlite3.register_converter方法的具体用法?Python sqlite3.register_converter怎么用?Python sqlite3.register_converter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqlite3
的用法示例。
在下文中一共展示了sqlite3.register_converter方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _updateProgramList
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def _updateProgramList(self, programList, channel):
# todo workaround service.py 'forgets' the adapter and convert set in _initialize.. wtf?!
sqlite3.register_adapter(datetime.datetime, self.adapt_datetime)
sqlite3.register_converter('timestamp', self.convert_datetime)
c = self.conn.cursor()
c.execute('DELETE FROM programs WHERE source=? AND channel=? ', [self.source.KEY, channel.id])
updatesId = 1 #TODO why?
for program in programList:
c.execute(
'INSERT OR REPLACE INTO programs(channel, title, sub_title, start_date, end_date, description, categories, image_large, image_small, season, episode, is_new, is_movie, language, source, updates_id) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[channel.id, program.title, program.sub_title, program.startDate, program.endDate, program.description, program.categories,
program.imageLarge, program.imageSmall, program.season, program.episode, program.is_new, program.is_movie,
program.language, self.source.KEY, updatesId])
self.conn.commit()
示例2: registerConverter
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def registerConverter(self, typename, callable):
sqlite3.register_converter(typename, callable)
##-----------------------------------------------------------------------------------------------------
##
##
示例3: _invokeAndBlockForResult
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def _invokeAndBlockForResult(self, method, *args):
sqlite3.register_adapter(datetime.datetime, self.adapt_datetime)
sqlite3.register_converter('timestamp', self.convert_datetime)
event = [method, None]
event.extend(args)
self.eventQueue.append(event)
self.event.set()
while not method.__name__ in self.eventResults:
time.sleep(0.1)
result = self.eventResults.get(method.__name__)
del self.eventResults[method.__name__]
return result
示例4: setUp
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def setUp(self):
self.con = sqlite.connect(":memory:", detect_types=sqlite.PARSE_COLNAMES)
sqlite.register_converter("bin", BinaryConverterTests.convert)
示例5: _sqlite3
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def _sqlite3(self, name):
"""Open/create a sqlite3 DB file"""
# Import sqlite here so it's only imported when required
import sqlite3
def dict_factory(cursor, row):
"""convert row to dict"""
data = {}
for idx, col in enumerate(cursor.description):
data[col[0]] = row[idx]
return data
def converter(data):
return self.codec.decode(data.decode('utf-8'))
sqlite3.register_adapter(list, self.codec.encode)
sqlite3.register_adapter(dict, self.codec.encode)
sqlite3.register_converter("json", converter)
conn = sqlite3.connect(
name,
detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES,
isolation_level='DEFERRED')
conn.row_factory = dict_factory
sqlscript = """
create table if not exists doit (
task_id text not null primary key,
task_data json
);"""
try:
conn.execute(sqlscript)
except sqlite3.DatabaseError as exception:
new_message = (
'Dependencies file in %(filename)s seems to use '
'an bad format or is corrupted.\n'
'To fix the issue you can just remove the database file(s) '
'and a new one will be generated.'
'Original error: %(msg)s'
% {'filename': repr(name), 'msg': str(exception)})
raise DatabaseException(new_message)
return conn
示例6: initialize_db
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def initialize_db(self):
c = self.connection.cursor()
sqlite3.register_adapter(bool, int)
sqlite3.register_converter("BOOLEAN", lambda v: bool(int(v)))
c.execute('''CREATE TABLE opts
(object blob)''')
c.execute('''CREATE TABLE http
(id integer primary key, object blob, complete boolean)''')
c.execute('''CREATE TABLE rdpvnc
(id integer primary key, object blob, complete boolean)''')
c.execute('''CREATE TABLE ua
(id integer primary key, parent_id integer, object blob,
complete boolean, key text)''')
self.connection.commit()
c.close()
示例7: _initialize
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def _initialize(self, cancel_requested_callback):
sqlite3.register_adapter(datetime.datetime, self.adapt_datetime)
sqlite3.register_converter('timestamp', self.convert_datetime)
self.alreadyTriedUnlinking = False
while True:
if cancel_requested_callback is not None and cancel_requested_callback():
break
try:
self.conn = sqlite3.connect(self.databasePath, detect_types=sqlite3.PARSE_DECLTYPES)
self.conn.text_factory = str
self.conn.execute('PRAGMA foreign_keys = ON')
self.conn.row_factory = sqlite3.Row
# create and drop dummy table to check if database is locked
c = self.conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS database_lock_check(id TEXT PRIMARY KEY)')
c.execute('DROP TABLE database_lock_check')
c.close()
self._createTables()
self.settingsChanged = self._wasSettingsChanged(ADDON)
break
except sqlite3.OperationalError:
if cancel_requested_callback is None:
xbmc.log('[script.tvguide.fullscreen] Database is locked, bailing out...', xbmc.LOGDEBUG)
break
else: # ignore 'database is locked'
xbmc.log('[script.tvguide.fullscreen] Database is locked, retrying...', xbmc.LOGDEBUG)
except sqlite3.DatabaseError:
self.conn = None
if self.alreadyTriedUnlinking:
xbmc.log('[script.tvguide.fullscreen] Database is broken and unlink() failed', xbmc.LOGDEBUG)
break
else:
try:
os.unlink(self.databasePath)
except OSError:
pass
self.alreadyTriedUnlinking = True
xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'), strings(DATABASE_SCHEMA_ERROR_1),
strings(DATABASE_SCHEMA_ERROR_2), strings(DATABASE_SCHEMA_ERROR_3))
return self.conn is not None
示例8: _init_db
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def _init_db(self):
"""Connect to the database and get new session number."""
# register adapters
sqlite3.register_adapter(dict, _adapt_dict)
sqlite3.register_converter('dict', _convert_dict)
sqlite3.register_adapter(list, _adapt_bufs)
sqlite3.register_converter('bufs', _convert_bufs)
# connect to the db
dbfile = os.path.join(self.location, self.filename)
self._db = sqlite3.connect(dbfile, detect_types=sqlite3.PARSE_DECLTYPES,
# isolation_level = None)#,
cached_statements=64)
# print dir(self._db)
first_table = previous_table = self.table
i=0
while not self._check_table():
i+=1
self.table = first_table+'_%i'%i
self.log.warn(
"Table %s exists and doesn't match db format, trying %s"%
(previous_table, self.table)
)
previous_table = self.table
self._db.execute("""CREATE TABLE IF NOT EXISTS %s
(msg_id text PRIMARY KEY,
header dict text,
metadata dict text,
content dict text,
buffers bufs blob,
submitted timestamp,
client_uuid text,
engine_uuid text,
started timestamp,
completed timestamp,
resubmitted text,
received timestamp,
result_header dict text,
result_metadata dict text,
result_content dict text,
result_buffers bufs blob,
queue text,
pyin text,
pyout text,
pyerr text,
stdout text,
stderr text)
"""%self.table)
self._db.commit()
示例9: _initialize
# 需要导入模块: import sqlite3 [as 别名]
# 或者: from sqlite3 import register_converter [as 别名]
def _initialize(self, cancel_requested_callback):
sqlite3.register_adapter(datetime.datetime, self.adapt_datetime)
sqlite3.register_converter('timestamp', self.convert_datetime)
self.alreadyTriedUnlinking = False
while True:
if cancel_requested_callback is not None and cancel_requested_callback():
break
try:
self.conn = sqlite3.connect(self.databasePath, detect_types=sqlite3.PARSE_DECLTYPES)
self.conn.execute('PRAGMA foreign_keys = ON')
self.conn.row_factory = sqlite3.Row
# create and drop dummy table to check if database is locked
c = self.conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS database_lock_check(id TEXT PRIMARY KEY)')
c.execute('DROP TABLE database_lock_check')
c.close()
self._createTables()
self.settingsChanged = self._wasSettingsChanged(ADDON)
break
except sqlite3.OperationalError:
if cancel_requested_callback is None:
xbmc.log('[script.ftvguide] Database is locked, bailing out...', xbmc.LOGDEBUG)
break
else: # ignore 'database is locked'
xbmc.log('[script.ftvguide] Database is locked, retrying...', xbmc.LOGDEBUG)
except sqlite3.DatabaseError:
self.conn = None
if self.alreadyTriedUnlinking:
xbmc.log('[script.ftvguide] Database is broken and unlink() failed', xbmc.LOGDEBUG)
break
else:
try:
os.unlink(self.databasePath)
except OSError:
pass
self.alreadyTriedUnlinking = True
xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'), strings(DATABASE_SCHEMA_ERROR_1),
strings(DATABASE_SCHEMA_ERROR_2), strings(DATABASE_SCHEMA_ERROR_3))
return self.conn is not None