ACC SHELL

Path : /usr/lib/python/bsddb/
File Upload :
Current File : //usr/lib/python/bsddb/dbtables.pyc

Ñò
q&ÄMc
@sÆdZddkZddkZddkZddkZddkZddkZyddkl	Z	Wn#e
j
oddkl	Z	nXee	dƒp#de
fd„ƒYZee	_ndefd„ƒYZdefd	„ƒYZd
d"d„ƒYZdefd
„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdZdZd„ZdZdZdZd„Zd„Zd„Zd„Z d„Z!d„Z"d d#d!„ƒYZ#dS($s7$Id: dbtables.py 66088 2008-08-31 14:00:51Z jesus.cea $iÿÿÿÿN(tdbtDBIncompleteErrorcBseZRS((t__name__t
__module__(((s$/usr/lib/python2.6/bsddb/dbtables.pyR$stTableDBErrorcBseZRS((RR(((s$/usr/lib/python2.6/bsddb/dbtables.pyR(stTableAlreadyExistscBseZRS((RR(((s$/usr/lib/python2.6/bsddb/dbtables.pyR*stCondcBseZdZd„ZRS(s!This condition matches everythingcCsdS(Ni((tselfts((s$/usr/lib/python2.6/bsddb/dbtables.pyt__call__0s(RRt__doc__R	(((s$/usr/lib/python2.6/bsddb/dbtables.pyR.st	ExactCondcBs eZdZd„Zd„ZRS(s)Acts as an exact match condition functioncCs
||_dS(N(t
strtomatch(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyt__init__5scCs
||ijS(N(R(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyR	7s(RRR
R
R	(((s$/usr/lib/python2.6/bsddb/dbtables.pyR3s	t
PrefixCondcBs eZdZd„Zd„ZRS(s9Acts as a condition function for matching a string prefixcCs
||_dS(N(tprefix(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyR
<scCs|t|iƒ |ijS(N(tlenR(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyR	>s(RRR
R
R	(((s$/usr/lib/python2.6/bsddb/dbtables.pyR:s	tPostfixCondcBs eZdZd„Zd„ZRS(s:Acts as a condition function for matching a string postfixcCs
||_dS(N(tpostfix(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyR
CscCs|t|iƒ|ijS(N(RR(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyR	Es(RRR
R
R	(((s$/usr/lib/python2.6/bsddb/dbtables.pyRAs	tLikeCondcBs&eZdZeid„Zd„ZRS(sÇ
    Acts as a function that will match using an SQL 'LIKE' style
    string.  Case insensitive and % signs are wild cards.
    This isn't perfect but it should work for the simple common cases.
    cCsfd}x$|D]}|i|d|ƒ}q
W|iddƒ|_tid|id|ƒ|_dS(Ns.*+()[]?s\t%s.*t^t$(treplacetlikestrtretcompile(RRtre_flagstchars_to_escapetchar((s$/usr/lib/python2.6/bsddb/dbtables.pyR
NscCs|ii|ƒS(N(Rtmatch(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyR	Vs(RRR
Rt
IGNORECASER
R	(((s$/usr/lib/python2.6/bsddb/dbtables.pyRHst__TABLE_NAMES__s._COLUMNS__cCs|tS(N(t_columns(ttable((s$/usr/lib/python2.6/bsddb/dbtables.pyt_columns_key_ss._DATA_.s	._ROWID_.icCs|t|t|S(N(t_data(R"tcoltrowid((s$/usr/lib/python2.6/bsddb/dbtables.pyt	_data_keykscCs|t|tS(N(R$(R"R%((s$/usr/lib/python2.6/bsddb/dbtables.pyt_search_col_data_keynscCs|tS(N(R$(R"((s$/usr/lib/python2.6/bsddb/dbtables.pyt_search_all_data_keyqscCs|t|tS(N(t_rowid(R"R&((s$/usr/lib/python2.6/bsddb/dbtables.pyt
_rowid_keytscCs|tS(N(R*(R"((s$/usr/lib/python2.6/bsddb/dbtables.pyt_search_rowid_keywscCse|itƒdjpB|itƒdjp,|itƒdjp|itƒdjodSdSdS(s‚Verify that the given string does not contain any
    metadata strings that might interfere with dbtables database operation.
    iiN(tfindt_table_names_keyR!R$R*(R((s$/usr/lib/python2.6/bsddb/dbtables.pytcontains_metastringszst
bsdTableDBcBsÈeZdddddd„Zd„Zd„Zdd„Zd„Zd„Zd„Zd	„Z	d
„Z
d„Zd„Zd
„Z
d„Zhhd„Zhd„Zhd„Zd„Zd„ZRS(ii€cs.d|_ti}|o|tiO}ntitiBtiBtiB|B}	y|tiO}Wnt	j
onX|o|	ti
B}	ntiƒ|_|ii
tiƒ|ii|||	Bƒ|o|tiO}nti|iƒ|_|iidƒ|iitiƒ|ii|ti||B|ƒ||_tiddjoHdtfd„ƒY‰dtf‡fd†ƒY}
|
|iƒ|_n|iiƒ}yXt|idƒt|ƒp8t|id	|iiƒttigdƒd
|ƒnWn|i ƒ‚nX|i!ƒh|_"dS(sÄbsdTableDB(filename, dbhome, create=0, truncate=0, mode=0600)

        Open database name in the dbhome Berkeley DB directory.
        Use keyword arguments when calling this constructor.
        iiitcursor_py3kcBs,eZd„Zd„Zd„Zd„ZRS(cSs
||_dS(N(t	_dbcursor(Rtdbcursor((s$/usr/lib/python2.6/bsddb/dbtables.pyR
®scSs
|iiƒS(N(R2tclose(R((s$/usr/lib/python2.6/bsddb/dbtables.pyR4±scSsV|iit|dƒƒ}|djo*|didƒ|didƒf}n|S(Ns	iso8859-1ii(R2t	set_rangetbytestNonetdecode(Rtsearchtv((s$/usr/lib/python2.6/bsddb/dbtables.pyR5´s

cSsPt|idƒƒ}|djo*|didƒ|didƒf}n|S(Ntnextis	iso8859-1i(tgetattrR2R7R8(RR:((s$/usr/lib/python2.6/bsddb/dbtables.pyt__next__»s

(RRR
R4R5R=(((s$/usr/lib/python2.6/bsddb/dbtables.pyR1­s			tdb_py3kcs}eZd„Zd
‡fd†Zd
d„Zdd
d„Zd
d„Zd
dd„Zd
dd„Z	d
d„Z
d	„ZRS(cSs
||_dS(N(t_db(RR((s$/usr/lib/python2.6/bsddb/dbtables.pyR
Ãscsˆ|iid|ƒƒS(Nttxn(R?tcursor(RR@(R1(s$/usr/lib/python2.6/bsddb/dbtables.pyRAÆscSs%t|idƒt|dƒd|ƒS(Nthas_keys	iso8859-1R@(R<R?R6(RtkeyR@((s$/usr/lib/python2.6/bsddb/dbtables.pyRBÉsicSsNt|dƒ}|djot|dƒ}n|ii||d|d|ƒS(Ns	iso8859-1tflagsR@(R6R7R?tput(RRCtvalueRDR@((s$/usr/lib/python2.6/bsddb/dbtables.pyREÍs
cSs(t|dƒ}|ii||d|ƒS(Ns	iso8859-1R@(R6R?RE(RRCRFR@((s$/usr/lib/python2.6/bsddb/dbtables.pyt	put_bytesÓscSsQt|dƒ}|ii|d|d|ƒ}|djo|idƒ}n|S(Ns	iso8859-1R@RD(R6R?tgetR7R8(RRCR@RDR:((s$/usr/lib/python2.6/bsddb/dbtables.pyRH×s

cSs+t|dƒ}|ii|d|d|ƒS(Ns	iso8859-1R@RD(R6R?RH(RRCR@RD((s$/usr/lib/python2.6/bsddb/dbtables.pyt	get_bytesÞscSs%t|dƒ}|ii|d|ƒS(Ns	iso8859-1R@(R6R?tdelete(RRCR@((s$/usr/lib/python2.6/bsddb/dbtables.pyRJâscSs
|iiƒS(N(R?R4(R((s$/usr/lib/python2.6/bsddb/dbtables.pyR4æsN(RRR
R7RARBRERGRHRIRJR4((R1(s$/usr/lib/python2.6/bsddb/dbtables.pyR>Âs	RBRGR@N(#R7Rt	DB_THREADt	DB_CREATEt
DB_INIT_MPOOLtDB_INIT_LOCKtDB_INIT_LOGtDB_INIT_TXNtDB_AUTO_COMMITtAttributeErrort
DB_RECOVERtDBEnvtenvt
set_lk_detecttDB_LOCK_DEFAULTtopentDB_TRUNCATEtDBtset_get_returns_nonet	set_flagstDB_DUPtDB_BTREEt
dbfilenametsystversion_infotobjectt	txn_beginR<R.REtpickletdumpstaborttcommitt_bsdTableDB__tablecolumns(RtfilenametdbhometcreatettruncatetmodetrecovertdbflagstmyflagstflagsforenvR>R@((R1s$/usr/lib/python2.6/bsddb/dbtables.pyR
‰sF		" 	'$

cCs|iƒdS(N(R4(R((s$/usr/lib/python2.6/bsddb/dbtables.pyt__del__üscCsX|idj	o|iiƒd|_n|idj	o|iiƒd|_ndS(N(RR7R4RU(R((s$/usr/lib/python2.6/bsddb/dbtables.pyR4ÿs


cCs1y|ii|ƒWntij
onXdS(N(RUttxn_checkpointRR(Rtmins((s$/usr/lib/python2.6/bsddb/dbtables.pyt
checkpointscCs.y|iiƒWntij
onXdS(N(RtsyncR(R((s$/usr/lib/python2.6/bsddb/dbtables.pyRv
scCsšdGH|iiƒ}y_|iƒ\}}xFth||6ƒGH|iƒ}|o|\}}q,|iƒdSq,Wn tij
o|iƒnXdS(s*Print the database to stdout for debuggings5******** Printing raw database for debugging ********N(RRAtfirsttreprR;R4tDBNotFoundError(RtcurRCtdataR;((s$/usr/lib/python2.6/bsddb/dbtables.pyt	_db_prints
cCsêt|tƒpt‚d}ydt|ƒotdƒ‚nx+|D]#}t|ƒotdƒ‚qDqDWt|ƒ}t|idƒ|ƒo
t	d‚n|i
iƒ}t|id|iiƒ|t
i|dƒd|ƒt
it|id|iiƒtd|d	tiƒƒ}|i|ƒ|iitd|ƒt|id|iiƒtt
i|dƒd|ƒ|iƒd}Wnbtij
oS}|o|iƒntid
djot|d‚qæt|id‚nXdS(
s”CreateTable(table, columns) - Create a new table in the database.

        raises TableDBError if it already exists or for other DB errors.
        s-bad table name: contains reserved metastringss.bad column name: contains reserved metastringsRBstable already existsRGiR@RIRDiiN(t
isinstancetlisttAssertionErrorR7R/t
ValueErrorR#R<RRRURcRERdRetloadsRHR.tDB_RMWtappendRJRgtDBErrorRfR`RaRtargs(RR"tcolumnsR@tcolumntcolumnlist_keyt	tablelisttdberror((s$/usr/lib/python2.6/bsddb/dbtables.pytCreateTable%s>



'


cCs™t|tƒpt‚t|ƒo
td‚nt|ƒ}t|idƒ|ƒpgSt|id|iiƒ|ƒ}|ot	i
|ƒSgSdS(s\Return a list of columns in the given table.
        [] if the table doesn't exist.
        s-bad table name: contains reserved metastringsRBRIN(R}tstrRR/R€R#R<RRHRdR(RR"Rˆtpickledcolumnlist((s$/usr/lib/python2.6/bsddb/dbtables.pytListTableColumnsUs

cCs/|iitƒ}|oti|ƒSgSdS(s)Return a list of tables in this database.N(Rtget_getR.RdR(Rtpickledtablelist((s$/usr/lib/python2.6/bsddb/dbtables.pyt
ListTablesgsc
Csât|tƒpt‚y|i||ƒWn°tj
o¤d}y2t|ƒ}|iiƒ}t	i
t|id|ii
ƒ|d|dtiƒƒ}h}x|D]}|||<q¦Wti|ƒ}x/|D]'}|i|ƒp|i|ƒqÐqÐW||joN|ii|d|ƒt|id|iiƒ|t	i|dƒd|ƒn|iƒd}|i|ƒWqÞtij
oS}	|o|iƒntiddjot|	d‚qÙt|	id‚qÞXnXdS(	sCreateOrExtendTable(table, columns)

        Create a new table in the database.

        If a table of this name already exists, extend it to have any
        additional columns present in the given list as well as
        all of its current columns.
        RIR@RDRGiiiN(R}R~RR‹RR7R#RURcRdRR<RRHR‚tcopyRBRƒRJREReRgt_bsdTableDB__load_column_infoR„RfR`RaRR…(
RR"R†R@Rˆt
oldcolumnlistt
oldcolumnhashtct
newcolumnlistRŠ((s$/usr/lib/python2.6/bsddb/dbtables.pytCreateOrExtendTableosD	'

cCs‰y+t|id|iiƒt|ƒƒ}Wn&tij
otd|f‚nX|ptd|f‚nti|ƒ|i|<dS(s'initialize the self.__tablecolumns dictRIsunknown table: %rN(	R<RRHR#RyRRdRRh(RR"ttcolpickles((s$/usr/lib/python2.6/bsddb/dbtables.pyt__load_column_info©scCsÚd}xÍ|pÅg}x-ttƒD]}|itiddƒƒq#Wtidt|Œ}tiddjo|i	dƒ}ny/|i
it||ƒd	d|dt
iƒWnt
ij
oq	Xd}q	W|S(
s"Create a new unique row identifieriiÿtBis	iso8859-1R@RDiN(txranget_rowid_str_lenRƒtrandomtrandinttstructtpackR`RaR8RRER+R7tDB_NOOVERWRITEtDBKeyExistError(RR"R@tuniquetblisttxtnewid((s$/usr/lib/python2.6/bsddb/dbtables.pyt__new_rowidµs"
!c	Cs®d	}yt|idƒt|ƒƒp
td‚n|ii|ƒp|i|ƒnx?|iƒD]1}|i|i	|ƒptd|f‚qfqfW|i
iƒ}|i|d|ƒ}x?|i
ƒD]1\}}|iit|||ƒ|d|ƒqÌW|iƒd	}Wn•tij
o†}tiƒ}|o'|iƒ|iit||ƒƒntiddjot|d|d‚qªt|id|d‚nXd	S(
sƒInsert(table, datadict) - Insert a new row into the table
        using the keys+values from rowdict as the column values.
        RBs
unknown tablesunknown column: %rR@iiiiN(R7R<RR#RRhRBR“tkeystcountRURct_bsdTableDB__new_rowidtitemsRER'RgR„R`texc_infoRfRJR+RaR…(	RR"trowdictR@R‡R&tdataitemRŠtinfo((s$/usr/lib/python2.6/bsddb/dbtables.pytInsertÐs2


)


cCs›yG|i|g|ƒ}|iƒ}x|iƒD]}d}yãxÜ|D]Ô}|iiƒ}yJ|iit|||ƒd|ƒ}	|iit|||ƒd|ƒWnti	j
o
d}	nX|||	ƒ}	|	djo)|ii
t|||ƒ|	d|ƒn|iƒd}qGWWq1|o|iƒn‚q1Xq1WWnMti
j
o>}
tiddjot|
d‚q—t|
id‚nXdS(sModify(table, conditions={}, mappings={}) - Modify items in rows matching 'conditions' using mapping functions in 'mappings'

        * table - the table name
        * conditions - a dictionary keyed on column names containing
          a condition callable expecting the data string as an
          argument and returning a boolean.
        * mappings - a dictionary keyed on column names containing a
          condition callable expecting the data string as an argument and
          returning the new string for that column.
        R@iiiN(t_bsdTableDB__SelectR©R7RURcRRHR'RJRyRERgRfR„R`RaRR…(RR"t
conditionstmappingstmatching_rowidsR†R&R@R‡R¯RŠ((s$/usr/lib/python2.6/bsddb/dbtables.pytModifyüsD
			
	
c	Csyy%|i|g|ƒ}|i|}xü|iƒD]î}d}y¯|iiƒ}xM|D]E}y&|iit|||ƒd|ƒWqWti	j
oqWXqWWy#|iit
||ƒd|ƒWnti	j
onX|iƒd}Wq2tij
o!}|o|i
ƒn‚q2Xq2WWnMtij
o>}tiddjot|d‚qut|id‚nXdS(sDelete(table, conditions) - Delete items matching the given
        conditions from the table.

        * conditions - a dictionary keyed on column names containing
          condition functions expecting the data string as an
          argument and returning a boolean.
        R@iiiN(R²RhR©R7RURcRRJR'RyR+RgR„RfR`RaRR…(	RR"R³RµR†R&R@R‡RŠ((s$/usr/lib/python2.6/bsddb/dbtables.pytDelete2s:	

	#

cCsµy[|ii|ƒp|i|ƒn|djo|i|}n|i|||ƒ}WnMtij
o>}tiddjot	|d‚q«t	|i
d‚nX|iƒS(s²Select(table, columns, conditions) - retrieve specific row data
        Returns a list of row column->value mapping dictionaries.

        * columns - a list of which column data to return.  If
          columns is None, all columns will be returned.
        * conditions - a dictionary keyed on column names
          containing callable conditions expecting the data string as an
          argument and returning a boolean.
        iiiN(RhRBR“R7R²RR„R`RaRR…tvalues(RR"R†R³RµRŠ((s$/usr/lib/python2.6/bsddb/dbtables.pytSelect_s

cCsþ|ii|ƒp|i|ƒn|djo|i|}nxC||iƒD]1}|i|i|ƒptd|f‚qSqSWh}h}d„}ti	ddjo|i
ƒ}|i|ƒnyg}xo|i
ƒD]a}	xXt|ƒD]=\}
}|||	ƒ}|djo|i
|
|	ƒPqôqôW|i|	ƒqáW|iiƒ}
d}x—|D]\}}|d}t||ƒ}||jo
d}nd}yÞ|
i|ƒ\}}xÂ|t|ƒ |joª|t}|i|ƒpy|p
||ƒo;|i|ƒph||<n|o||||<qfqj|i|ƒo||=n|||<n|
iƒ\}}q¿WWqbtij
o]}ti	ddjo|dtijo‚qéqb|idtijo‚qbqbqbXqbW|
iƒ~t|ƒdjoåxâ|i
ƒD]Ð\}}xÁ|D]¹}|i|ƒoq5ny&|iit|||ƒƒ||<Wq5tij
od}ti	ddjo|dtijo‚qßn|idtijo‚nd||<q5Xq5Wq"Wn|S(s™__Select() - Used to implement Select and Delete (above)
        Returns a dictionary keyed on rowids containing dicts
        holding the row data for columns listed in the columns param
        that match the given conditions.
        * conditions is a dictionary keyed on column names
        containing callable conditions expecting the data string as an
        argument and returning a boolean.
        sunknown column: %rcSs
|d}|d}t|ƒt|ƒjo…t|tƒo0t|tƒo tt|iƒt|iƒƒSt|tƒo0t|tƒo tt|iƒt|iƒƒSdSt|tƒodSt|tƒodSt|tƒodSt|tƒodSdS(Niiiÿÿÿÿ(	ttypeR}RtcmpRRRRR(tatupletbtupletatb((s$/usr/lib/python2.6/bsddb/dbtables.pytcmp_conditions’s"

    iiiiÿÿÿÿN(RhRBR“R7ttablecolumnsR©RªRR`RaR¬tsortt	enumeratetinsertRƒRRAR(R5RRR;R„tDB_NOTFOUNDR…R4RHR'(RR"R†R³R‡Rµtrejected_rowidsRÀt
conditionlisttitjtktrRzt
column_numt	conditiont	searchkeytsavethiscolumndataRCR{R&RŠtrowdata((s$/usr/lib/python2.6/bsddb/dbtables.pyt__Selectxs–

	


	




	c	Cskd}yü|iiƒ}|iit|ƒd|ƒ|ii|ƒ}t|ƒ}x\y|i|ƒ\}}Wnti	j
oPnX|t
|ƒ |joPn|iƒqUt|ƒ}x\y|i|ƒ\}}Wnti	j
oPnX|t
|ƒ |joPn|iƒqÀ|iƒt
it|id|iiƒtd|dtiƒƒ}y|i|ƒWntj
onX|iitd|ƒt|id|iiƒtt
i|dƒd|ƒ|iƒd}|ii|ƒo|i|=nWnbtij
oS}|o|iƒntiddjot|d‚qgt|id‚nXdS(	s(Remove an entire table from the databaseR@RIRDRGiiiN( R7RURcRRJR#RAR)R5RyRR,R4RdRR<RHR.R‚tremoveR€REReRgRhRBR„RfR`RaRR…(	RR"R@Rzt	table_keyRCR{R‰RŠ((s$/usr/lib/python2.6/bsddb/dbtables.pytDropüsX



(RRR
RrR4RuRvR|R‹RŽR‘R˜R“R«R±R¶R·R¹R²RÔ(((s$/usr/lib/python2.6/bsddb/dbtables.pyR0ˆs&	r					0			:			,6-	„((($t_cvsidRR`R’RžR tcPickleRdtbsddb3RtImportErrortbsddbthasattrt	ExceptionRt
StandardErrorRRRRRRRR.R!R#R$R*RR'R(R)R+R,R/R0(((s$/usr/lib/python2.6/bsddb/dbtables.pyt<module>sB
							

ACC SHELL 2018