Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/playhouse/__pycache__/apsw_ext.cpython-35.opt-1.pyc



R6W@sdZddlZddlTddlmZddlmZddlmZddlmZddlmZ	dd	lm
Zdd
lmZ
ddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZGdddeZGdddeZddZGdddeZGddde	ZGdd d eZGd!d"d"eZ
Gd#d$d$e
ZdS)%an
Peewee integration with APSW, "another python sqlite wrapper".

Project page: https://rogerbinns.github.io/apsw/

APSW is a really neat library that provides a thin wrapper on top of SQLite's
C interface.

Here are just a few reasons to use APSW, taken from the documentation:

* APSW gives all functionality of SQLite, including virtual tables, virtual
  file system, blob i/o, backups and file control.
* Connections can be shared across threads without any additional locking.
* Transactions are managed explicitly by your code.
* APSW can handle nested transactions.
* Unicode is handled correctly.
* APSW is faster.
N)*)_sqlite_date_part)_sqlite_date_trunc)_sqlite_regexp)BooleanField)	DateField)
DateTimeField)DecimalField)logger)	savepoint)	TimeField)transaction)SqliteExtDatabase)VirtualCharField)VirtualField)VirtualFloatField)VirtualIntegerField)VirtualModelc@s+eZdZdddZddZdS)r
deferredcCs||_||_dS)N)db	lock_type)selfrrr/apsw_ext.py__init__)s	ztransaction.__init__cCs|jj|jdS)N)rbeginr)rrrr_begin-sztransaction._beginN)__name__
__module____qualname__rrrrrrr
(sr
cseZdZdfddZddZddZdd	Zfd
dZdd
ZddZ	ddZ
ddZddZddZ
ddZddddZddZdd Zd!d"d#Zd$d%Zd&d'Zd!d(d)Zdd*d+ZS),APSWDatabaseNcs/||_i|_tt|j||dS)N)timeout_modulessuperr r)rdatabaser!kwargs)	__class__rrr2s		zAPSWDatabase.__init__cCs||j|<dS)N)r")rmod_namemod_instrrrregister_module7szAPSWDatabase.register_modulecCs|j|=dS)N)r")rr'rrrunregister_module:szAPSWDatabase.unregister_modulec	Ks^tj||}|jdk	r1|j|jy|j|Wn|jYnX|S)N)apsw
Connectionr!Zsetbusytimeout_add_conn_hooksclose)rr$r%connrrr_connect=s
zAPSWDatabase._connectcs'tt|j||j|dS)N)r#r r-
_load_modules)rr/)r&rrr-HszAPSWDatabase._add_conn_hookscCs4x-|jjD]\}}|j||qW|S)N)r"itemsZcreatemodule)rr/r'r(rrrr1LszAPSWDatabase._load_modulescsLxE|jjD]4\}\}fdd}|j||qWdS)Ncs}||j|jfS)N)stepfinalize)instance)klassrrmake_aggregateSs	z5APSWDatabase._load_aggregates.<locals>.make_aggregate)Z_aggregatesr2Zcreateaggregatefunction)rr/name
num_paramsr7r)r6r_load_aggregatesQs"zAPSWDatabase._load_aggregatescCs4x-|jjD]\}}|j||qWdS)N)Z_collationsr2Zcreatecollation)rr/r8fnrrr_load_collationsXszAPSWDatabase._load_collationscCs=x6|jjD]%\}\}}|j|||qWdS)N)Z
_functionsr2Zcreatescalarfunction)rr/r8r;r9rrr_load_functions\s"zAPSWDatabase._load_functionscCs2|jdx|jD]}|j|qWdS)NT)enableloadextension_extensions
loadextension)rr/	extensionrrr_load_extensions`s
zAPSWDatabase._load_extensionscCsF|jj||jsB|j}|jd|j|dS)NT)r?addZ	is_closedZget_connr>r@)rrAr/rrrload_extensiones

zAPSWDatabase.load_extensioncCs|j||pf|S)N)execute)rcursorsqlparamsrrr_execute_sqllszAPSWDatabase._execute_sqlTcCsJtj||f|j$|j}|j|||WdQRX|S)N)r
debugZexception_wrapper
get_cursorrI)rrGrHZrequire_commitrFrrrexecute_sqlps

zAPSWDatabase.execute_sqlcCs |jjr|jjSdS)N)Z_metaZauto_increment
getconnectionZlast_insert_rowid)rrFZmodelrrrlast_insert_idwszAPSWDatabase.last_insert_idcCs|jjS)N)rMZchanges)rrFrrr
rows_affected{szAPSWDatabase.rows_affectedrcCs|jjd|dS)Nz	begin %s;)rKrE)rrrrrr~szAPSWDatabase.begincCs|jjddS)Nzcommit;)rKrE)rrrrcommitszAPSWDatabase.commitcCs|jjddS)Nz	rollback;)rKrE)rrrrrollbackszAPSWDatabase.rollbackcCs
t||S)N)r
)rrrrrr
szAPSWDatabase.transactioncCs
t||S)N)r)rZsidrrrrszAPSWDatabase.savepoint)rrrrr)r*r0r-r1r:r<r=rBrDrIrLrNrOrrPrQr
rrr)r&rr 1s(r cCs|dk	rt|SdS)N)str)svrrrnhsrUcs"eZdZfddZS)rcs8tt|j|}|dk	r4|r0dp3dSdS)Nr)r#rdb_value)rrT)r&rrrWszBooleanField.db_value)rrrrWrr)r&rrsrc@seZdZeZdS)rN)rrrrUrWrrrrrsrc@seZdZeZdS)rN)rrrrUrWrrrrrsrc@seZdZeZdS)rN)rrrrUrWrrrrrsrc@seZdZeZdS)r	N)rrrrUrWrrrrr	sr	)__doc__r+ZpeeweerrrrZ
_BooleanFieldrZ
_DateFieldrZ_DateTimeFieldr	Z
_DecimalFieldr
rrZ
_TimeFieldr
Z_transactionZplayhouse.sqlite_extrrrrrrr rUrrrr<module>s6
	]
Back to Directory File Manager