ZEXP<l((U OFS.FolderqUFolderqtqNt.}q(Uselectq(UDq(U#Products.PythonScripts.PythonScriptqU PythonScriptqttQUidq U oracle_lobsq U__ac_local_roles__q }q Upeterq ]qUOwnerqasUsql_update_blobq(U?q(UProducts.ZSQLMethods.SQLqUSQLqttQU_objectsq(}q(U meta_typeqUScript (Python)qUidqUsetqu}q(U meta_typeqU Z SQL MethodqUidqUsql_insert_blobqu}q(hhhUsql_select_blobq u}q!(hhhhu}q"(hhhUsql_create_tableq#u}q$(U meta_typeq%UScript (Python)q&Uidq'Uupdateq(u}q)(h%h&h'Uinsertq*u}q+(h%h&h'Uselectq,u}q-(h%U DTML Documentq.h'U list_blobsq/utq0h (U=q1(hUSQLq2ttQUsetq3(U@q4(hU PythonScriptq5ttQh(U>q6(hUSQLq7ttQUtitleq8Uh/(UEq9(UOFS.DTMLDocumentq:U DTMLDocumentq;ttQh#(UAq<(hUSQLq=ttQUinsertq>(UCq?(hU PythonScriptq@ttQUupdateqA(UBqB(hU PythonScriptqCttQu.D ((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uidq U_getitemq U_getattrq Uresultq UrowqUlobqtU co_argcountqKubU_paramsqUid=""qUidqUselectqU__ac_local_roles__q}qUpeterq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerq U containerq!U name_subpathq"Utraverse_subpathq#U name_contextq$Ucontextq%U name_m_selfq&Uscriptq'usbU func_defaultsq((Utq)U_codeq*TJcsddZdS(Nscst}t}g}xt|tdd|drU}||d}||dh||dd<||dd<q6W |SdS(Nssql_select_blobsidisblobsappendsread( s _getitem_s_getitems _getattr_s_getattrsresults containersidsrowslob(sids_getitems_getattrsresultsrowslob((sScript (Python)sselects  '>(sselect(((sScript (Python)ssq+U_bodyq,TL# Manually iterate over whole result set, copy into list of dicts just like dictionaries() # except we also read all BLOBs in their entirety and put in the value, not the # LobLocator result = [] for row in container.sql_select_blob(id=id): lob = row['blob'] result.append({'id': row['id'], 'blob': lob.read()}) return result q-U Script_magicq.KUwarningsq/)Uerrorsq0)U Python_magicq1U* q2u.?<((UProducts.ZSQLMethods.SQLqUSQLqtqNt.}q(UidqUsql_update_blobqU__ac_local_roles__q}qUpeterq ]q UOwnerq asU_argq (cShared.DC.ZRDB.Aqueduct Args q oq}q(U_keysq]qUidqaU_dataq}qh}qsubU connection_idqUappload_db_oracleqU_colq]q(}q(UnameqUIDqUtypeqUiUnullqKUwidthqKu}q (hUBLOBq!hUshKhMueUtemplateq"cShared.DC.ZRDB.DA SQL q#NRq$}q%(U__name__q&Uq'Uglobalsq(}q)Urawq*UUSELECT id, blob FROM test WHERE FOR UPDATEq+U_varsq,}q-ubUtitleq.UU arguments_srcq/hUsrcq0h+u.=o((UProducts.ZSQLMethods.SQLqUSQLqtqNt.}q(UidqUsql_select_blobqU__ac_local_roles__q}qUpeterq ]q UOwnerq asU connection_idq Uappload_db_oracleq UsrcqUsSELECT id, blob FROM test qU_colq]q(}q(UnameqUIDqUtypeqUiUnullqKUwidthqKu}q(hUBLOBqhUshKhMueUtemplateqcShared.DC.ZRDB.DA SQL qNRq}q(U__name__qUqUglobalsq }q!Urawq"hU_varsq#}q$ubUtitleq%UU arguments_srcq&Uid=""q'U_argq((cShared.DC.ZRDB.Aqueduct Args q)oq*}q+(U_keysq,]q-Uidq.aU_dataq/}q0h.}q1Udefaultq2Ussubu.@((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Udataq U_getitemq U_getattrq U_printq UxUlobqtU co_argcountqKubU_paramsqU data="Peter"qUidqUsetqU__ac_local_roles__q}qUpeterq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerq U name_subpathq!Utraverse_subpathq"U name_contextq#Ucontextq$U name_m_selfq%Uscriptq&usbU func_defaultsq'(UPeterq(tq)U_codeq*TcsddZdS(NsPeterc1st}t}t}|||tddIJxc|tddrJ}||d}||d|||dt |qRWxJ|tddr1} ||d} |||dIJqW |SdS( Nssels dictionariesssel2istswritestrimsread( s _getitem_s_getitems _getattr_s_getattrs_print_s_prints containersxslobsdataslen(sdatas_getitems_getattrs_printsxslob((sScript (Python)ssets:!!(sset(((sScript (Python)ssq+U_bodyq,Uprint container.sel().dictionaries() for x in container.sel2(): lob = x['t'] lob.write(data) lob.trim(len(data)) for x in container.sel(): lob = x['t'] print lob.read() return printed q-U Script_magicq.KUwarningsq/)Uerrorsq0)U Python_magicq1U* q2u.>((UProducts.ZSQLMethods.SQLqUSQLqtqNt.}q(UidqUsql_insert_blobqU__ac_local_roles__q}qUpeterq ]q UOwnerq asU connection_idq Uappload_db_oracleq UsrcqUINSERT INTO test (id, blob) VALUES ( , empty_blob() ) SELECT id, blob FROM test WHERE FOR UPDATEqU_colq]q(}q(UnameqUIDqUtypeqUiUnullqKUwidthqKu}q(hUBLOBqhUshKhMueUtemplateqcShared.DC.ZRDB.DA SQL qNRq}q(U__name__qUqUglobalsq }q!Urawq"hU_varsq#}q$ubUtitleq%UU arguments_srcq&Uidq'U_argq((cShared.DC.ZRDB.Aqueduct Args q)oq*}q+(U_keysq,]q-h'aU_dataq.}q/h'}q0subu.E((UOFS.DTMLDocumentqU DTMLDocumentqtqNt.}q(U__ac_local_roles__q}qUpeterq]qUOwnerq asU__name__q U list_blobsq Utitleq UList of all BLOBsq Uglobalsq}qUrawqU

ID BLOB
&dtml-id; &dtml-blob;

qU_varsq}qu.A((UProducts.ZSQLMethods.SQLqUSQLqtqNt.}q(UidqUsql_create_tableqU__ac_local_roles__q}qUpeterq ]q UOwnerq asU connection_idq Uappload_db_oracleq UsrcqU+CREATE TABLE test ( id INT, blob BLOB )qU_colq)UtemplateqcShared.DC.ZRDB.DA SQL qNRq}q(U__name__qUqUglobalsq}qUrawqhU_varsq}qubUtitleqUU arguments_srcqUU_argq(cShared.DC.ZRDB.Aqueduct Args qoq }q!(U_keysq"]q#U_dataq$}q%ubu.C((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uidq Udataq U_getitemq U_getattrq UrowqUlobqtqU co_argcountqKubU_paramsqUid, dataqh UinsertqU__ac_local_roles__q}qUpeterq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerq U containerq!U name_subpathq"Utraverse_subpathq#U name_contextq$Ucontextq%U name_m_selfq&Uscriptq'usbU func_defaultsq(NU_codeq)TcsdZdS(Ncsct}t}xM|tdd|dr.}||d}||d|q*WdS(Nssql_insert_blobsidisblobswrite( s _getitem_s_getitems _getattr_s_getattrs containersidsrowslobsdata(sidsdatas_getitems_getattrsrowslob((sScript (Python)sinserts3(sinsert(((sScript (Python)ssq*U_bodyq+USfor row in container.sql_insert_blob(id=id): lob = row['blob'] lob.write(data) q,U Script_magicq-KUwarningsq.)Uerrorsq/)U Python_magicq0U* q1u.B((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uidq Udataq U_getitemq U_getattrq UrowqUlobqtqU co_argcountqKubU_paramsqUid, dataqh UupdateqU__ac_local_roles__q}qUpeterq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerq U containerq!U name_subpathq"Utraverse_subpathq#U name_contextq$Ucontextq%U name_m_selfq&Uscriptq'usbU func_defaultsq(NU_codeq)T#csdZdS(Ncst}t}xi|tdd|drJ}||d}||d|||dt |q*WdS(Nssql_update_blobsidisblobswritestrim( s _getitem_s_getitems _getattr_s_getattrs containersidsrowslobsdataslen(sidsdatas_getitems_getattrsrowslob((sScript (Python)supdates3(supdate(((sScript (Python)ssq*U_bodyq+Uifor row in container.sql_update_blob(id=id): lob = row['blob'] lob.write(data) lob.trim(len(data)) q,U Script_magicq-KUwarningsq.)Uerrorsq/)U Python_magicq0U* q1u.