u@Dc@s;dZddkZddkZddkTy ddklZlZlZWn/ej o#ddk l Zl Zl ZnXdZ dZ dZ d d8d YZd d9d YZd efdYZdZdZdd:dYZeZddddddZdd;dYZedddddZeZedddZedddddd d!ZedZedd d!Zed"Zed#Z ed$d%d&d'd(d)d*d+d, Z!ed-d.Z"d/Z#d0Z$d1Z%d2Z&d3Z'd4Z(d5Z)e*d6jod7Ge+GHHeGHndS(<spgdb - DB-API 2.0 compliant module for PygreSQL. (c) 1999, Pascal Andre . See package documentation for further information on copyright. Inline documentation is sparse. See DB-API 2.0 specification for usage information: http://www.python.org/peps/pep-0249.html Basic usage: pgdb.connect(connect_string) # open a connection # connect_string = 'host:database:user:password:opt:tty' # All parts are optional. You may also pass host through # password as keyword arguments. To pass a port, # pass it in the host keyword parameter: pgdb.connect(host='localhost:5432') connection.cursor() # open a cursor cursor.execute(query[, params]) # Execute a query, binding params (a dictionary) if they are # passed. The binding syntax is the same as the % operator # for dictionaries, and no quoting is done. cursor.executemany(query, list of params) # Execute a query many times, binding each param dictionary # from the list. cursor.fetchone() # fetch one row, [value, value, ...] cursor.fetchall() # fetch all rows, [[value, value, ...], ...] cursor.fetchmany([size]) # returns size or cursor.arraysize number of rows, # [[value, value, ...], ...] from result set. # Default cursor.arraysize is 1. cursor.description # returns information about the columns # [(column_name, type_name, display_size, # internal_size, precision, scale, null_ok), ...] # Note that precision, scale and null_ok are not implemented. cursor.rowcount # number of rows available in the result set # Available after a call to execute. connection.commit() # commit transaction connection.rollback() # or rollback transaction cursor.close() # close the cursor connection.close() # close the connection iN(t*(tDateTimet TimeDeltat DateTimeType(tdatetimet timedeltaRs2.0itpyformatt pgdbTypeCachecBs#eZdZdZdZRS(cCs|i|_h|_dS(N(tsourcet_pgdbTypeCache__sourcet_pgdbTypeCache__type_cache(tselftcnx((s*/usr/lib64/python2.6/site-packages/pgdb.pyt__init__]scCs|djo|S|tjon|tjon|tjo|d dj}n|tjot|}n|tjot|}n|tjot |}np|t jo4|i dd}|i dd}t |}n/|t jon|t jot|}n|S(NitttTt$tt,(RR(tNonetSTRINGtBINARYtBOOLtINTEGERtinttLONGtlongtFLOATtfloattMONEYtreplacetDATETIMEtROWID(R ttyptvalue((s*/usr/lib64/python2.6/site-packages/pgdb.pyttypecastas.          cCs{y|i|SWne|iid||iidd}|ddt|ddddf}||i|<|SXdS(Ns2SELECT typname, typlen FROM pg_type WHERE oid = %sii(R R texecutetfetchRR(R toidtres((s*/usr/lib64/python2.6/site-packages/pgdb.pytgetdescr}s  (t__name__t __module__R R#R((((s*/usr/lib64/python2.6/site-packages/pgdb.pyR[s  t pgdbCursorcBsweZdZdZdZd dZdZdZdZ d ddZ d Z d Z dd Z RS( cCs:||_||_d|_d|_d|_d|_dS(Nii(t_pgdbCursor__cachet_pgdbCursor__sourceRt descriptiontrowcountt arraysizet lastrowid(R tsrctcache((s*/usr/lib64/python2.6/site-packages/pgdb.pyR s      cCs,|iid|_d|_d|_dS(Ni(R-tcloseRR.R/R1(R ((s*/usr/lib64/python2.6/site-packages/pgdb.pyR4s   cCs ||_dS(N(R0(R tsize((s*/usr/lib64/python2.6/site-packages/pgdb.pyR0scCs\|o>t|tio+t|dtio|i||n|i||fdS(Ni(t isinstancettypestListTypet TupleTypet executemany(R t operationtparams((s*/usr/lib64/python2.6/site-packages/pgdb.pyR$sc Csd|_d|_d}d}yqxj|D]b}|djot||}n|}|ii|}|djo||7}q(d|_q(WWnbtj o}td||fn<tj o}t d||fnt d|nX|ii t jo||ii |_g} xE|ii D]4} | dd!|ii| d} | i| q,W| |_|ii|_n%||_d|_|ii|_dS( NiitINITserror '%s' in '%s'sinternal error in '%s': %ssinternal error in '%s'ii(RR.R/t _quoteparamsR-R$tErrort DatabaseErrort ExceptiontOperationalErrort resulttypet RESULT_DQLtntuplestlistinfoR,R(tappendt oidstatusR1( R R;t param_seqttotrowstsqlR<trowstmsgterrtdR!tdesc((s*/usr/lib64/python2.6/site-packages/pgdb.pyR:s@    !   cCs-|idd}y |dSWndSXdS(Nii(t fetchmanyR(R R'((s*/usr/lib64/python2.6/site-packages/pgdb.pytfetchones  cCs|iddS(Nii(RQ(R ((s*/usr/lib64/python2.6/site-packages/pgdb.pytfetchallsic Cs|djo |i}n|djo ||_ny|ii|}Wn$tj o}tt|nXg}xi|D]a}g}xEtt|D]1}|i |i i |i |d||qW|i |q~W|S(Ni( RR0R-R%R?R@tstrtrangetlenRGR,R#R.( R R5tkeepR'tetresulttrtrowti((s*/usr/lib64/python2.6/site-packages/pgdb.pyRQs&    cCs tddS(Nsnextset() is not supported(tNotSupportedError(R ((s*/usr/lib64/python2.6/site-packages/pgdb.pytnextsetscCsdS(N((R tsizes((s*/usr/lib64/python2.6/site-packages/pgdb.pyt setinputsizesscCsdS(N((R R5tcol((s*/usr/lib64/python2.6/site-packages/pgdb.pyt setoutputsizesN(R)R*R R4R0RR$R:RRRSRQR^R`Rb(((s*/usr/lib64/python2.6/site-packages/pgdb.pyR+s    +    t _quoteitemcBseZdZRS(cCsttt|i|S(N(t_quotetsuperRct __getitem__(R tkey((s*/usr/lib64/python2.6/site-packages/pgdb.pyRfs(R)R*Rf(((s*/usr/lib64/python2.6/site-packages/pgdb.pyRcscCs5t|tot|}n$t|to|id}nt|tio,dt|iddidd}nt|titi ti fon|djo d}nst|ti ti fo#dd itd |}n4t|d o|i}ntd t||S( Nsutf-8s'%s's\s\\t's''tNULLs(%s)RcSstt|S((RTRd(tx((s*/usr/lib64/python2.6/site-packages/pgdb.pytst __pg_repr__s!do not know how to handle type %s(R6RRTtunicodetencodeR7t StringTypeRtIntTypetLongTypet FloatTypeRR8R9tjointmapthasattrRltInterfaceErrorttype(Rj((s*/usr/lib64/python2.6/site-packages/pgdb.pyRds ,"  #cCs=t|dot|}nttt|}||S(Nthas_key(RuRcttupleRtRd(tsR<((s*/usr/lib64/python2.6/site-packages/pgdb.pyR>stpgdbCnxcBs5eZdZdZdZdZdZRS(cCsO||_t||_y |ii}|idWntdnXdS(NtBEGINsinvalid connection.(t _pgdbCnx__cnxRt_pgdbCnx__cacheRR$RB(R R R2((s*/usr/lib64/python2.6/site-packages/pgdb.pyR )s cCs|iidS(N(R}R4(R ((s*/usr/lib64/python2.6/site-packages/pgdb.pyR42scCsDy-|ii}|id|idWntdnXdS(NtCOMMITR|s can't commit.(R}RR$RB(R R2((s*/usr/lib64/python2.6/site-packages/pgdb.pytcommit5s  cCsDy-|ii}|id|idWntdnXdS(NtROLLBACKR|scan't rollback.(R}RR$RB(R R2((s*/usr/lib64/python2.6/site-packages/pgdb.pytrollback=s  cCs:y#|ii}t||iSWntdnXdS(Nsinvalid connection.(R}RR+R~RB(R R2((s*/usr/lib64/python2.6/site-packages/pgdb.pytcursorEs (R)R*R R4RRR(((s*/usr/lib64/python2.6/site-packages/pgdb.pyR{'s    cCsfd}d}d}d}d} d} d} yO|id} | d}| d}| d}| d} | d} | d } WnnX|djo |}n|djo |} n|djo |}n|djo;y-|id} | d}t| d}WqqXn|djo d}n|djo d}nt|||| | || } t| S( NiRt:iiiiii(tsplitRRt _connect_R{(tdsntusertpasswordthosttdatabasetdbporttdbhosttdbbasetdbusertdbpasswdtdbopttdbttyR<R ((s*/usr/lib64/python2.6/site-packages/pgdb.pytconnectPsJ                 tpgdbTypecBseZdZdZRS(cGs ||_dS(N(tvalues(R R((s*/usr/lib64/python2.6/site-packages/pgdb.pyR scCs2||ijodS||ijodSdSdS(Niii(R(R tother((s*/usr/lib64/python2.6/site-packages/pgdb.pyt__cmp__s (R)R*R R(((s*/usr/lib64/python2.6/site-packages/pgdb.pyRs tchartbpchartnamettexttvarchartint2tint4tserialtint8tfloat4tfloat8tnumerictbooltmoneytabstimetreltimet tintervaltdatettimettimespant timestampt timestamptztintervalR&toid8cCst|||S(N(R(tyeartmonthtday((s*/usr/lib64/python2.6/site-packages/pgdb.pytDatescCst|||S(N(R(thourtminutetsecond((s*/usr/lib64/python2.6/site-packages/pgdb.pytTimescCst||||||S(N(R(RRRRRR((s*/usr/lib64/python2.6/site-packages/pgdb.pyt TimestampscCsttti|d S(Ni(tapplyRRt localtime(tticks((s*/usr/lib64/python2.6/site-packages/pgdb.pyt DateFromTicksscCsttti|dd!S(Nii(RRRR(R((s*/usr/lib64/python2.6/site-packages/pgdb.pyt TimeFromTicksscCsttti|d S(Ni(RRRR(R((s*/usr/lib64/python2.6/site-packages/pgdb.pytTimestampFromTicksscCs|S(N((RT((s*/usr/lib64/python2.6/site-packages/pgdb.pytBinaryst__main__sPyGreSQL version(((((,t__doc__R7Rt_pgt mx.DateTimeRRRt ImportErrorRRtapilevelt threadsafetyt paramstyleRR+tdictRcRdR>R{RRRRRRRtNUMBERRRRRRR RRRRRRRR)tversion(((s*/usr/lib64/python2.6/site-packages/pgdb.pyt@sZ    !7r  (3     !