Ñò Š„[Jc @s¯dZddkZddkZddklZddklZlZddkl Z ei dei ei BƒZ deifd„ƒYZd eifd „ƒYZee_dS( sDefault implementations of per-dialect sqlalchemy.engine classes. These are semi-private implementation classes which are only of importance to database dialect authors; dialects will usually use the classes here as the base class for their own corresponding classes. iÿÿÿÿN(tbase(tcompilert expression(texcs-\s*(?:UPDATE|INSERT|CREATE|DELETE|DROP|ALTER)tDefaultDialectcBseZdZdZeiZeiZei Z ei Z e iZeZeZdZeZeZeZeZhZdZeZeZeeddddd„Zd„Zd„Z d„Z!d „Z"d „Z#d „Z$d „Z%d „Z&d„Z'dd„Z(dd„Z)d„Z*RS(s!Default implementation of Dialecttdefaulti'tnamedsutf-8cKsü||_||_||_t|_d|_||_|dj o ||_n0|idj o|ii|_n |i |_|idj|_|i |ƒ|_ |o0||i jo t id||i fƒ‚n||_t|d|ƒ|_dS(NtqmarktformattnumericsQLabel length of %d is greater than this dialect's maximum identifier length of %dtdescription_encoding(RsformatR (tconvert_unicodetassert_unicodetencodingtFalset positionaltNonet_ischematdbapit paramstyletdefault_paramstyletpreparertidentifier_preparertmax_identifier_lengthRt ArgumentErrort label_lengthtgetattrR (tselfR R R RRRtkwargs((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt__init__,s"           cCs$t|ƒtjo |ƒ}n|S(sêProvide a database-specific ``TypeEngine`` object, given the generic object which comes from the types module. Subclasses will usually use the ``adapt_type()`` method in the types module to make this job easy.(ttype(Rttypeobj((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyttype_descriptorBs cCs:t|ƒ|ijo tid||ifƒ‚ndS(Ns7Identifier '%s' exceeds maximum length of %d characters(tlenRRtIdentifierError(Rtident((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pytvalidate_identifierMscCsdS(saImplementations might want to put logic here for turning autocommit on/off, etc. N((Rt connection((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pytdo_beginQscCs|iƒdS(saImplementations might want to put logic here for turning autocommit on/off, etc. N(trollback(RR%((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt do_rollbackXscCs|iƒdS(saImplementations might want to put logic here for turning autocommit on/off, etc. N(tcommit(RR%((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt do_commit_scCsdtiddƒS(s³Create a random two-phase transaction ID. This id will be passed to do_begin_twophase(), do_rollback_twophase(), do_commit_twophase(). Its format is unspecified.s _sa_%032xiii€l (trandomtrandint(R((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt create_xidfscCs|iti|ƒƒdS(N(texecuteRtSavepointClause(RR%tname((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt do_savepointnscCs|iti|ƒƒdS(N(R.RtRollbackToSavepointClause(RR%R0((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pytdo_rollback_to_savepointqscCs|iti|ƒƒdS(N(R.RtReleaseSavepointClause(RR%R0((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pytdo_release_savepointtscCs|i||ƒdS(N(t executemany(Rtcursort statementt parameterstcontext((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pytdo_executemanywscCs|i||ƒdS(N(R.(RR7R8R9R:((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt do_executezscCstS(N(R(Rte((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt is_disconnect}sN(+t__name__t __module__t__doc__R0RtSchemaGeneratortschemageneratort SchemaDroppert schemadroppertDefaultCompilertstatement_compilertIdentifierPreparerRRt DefaultRunnert defaultrunnertTruetsupports_alterRtsupports_unicode_statementsRtsupports_sane_rowcounttsupports_sane_multi_rowcounttpreexecute_pk_sequencestsupports_pk_autoincrementtdbapi_type_mapRtsupports_default_valuestsupports_empty_insertRRR R$R&R(R*R-R1R3R5R;R<R>(((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyRsB                 tDefaultExecutionContextcBsÂeZdddd„Zed„ƒZd„Zd„Zd„Zd„Z d„Z d„Z d„Z d „Z d „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„ZRS(csÐ|ˆ_|ˆ_ˆ_ˆˆ_|iˆ_ˆdj o©ˆiptidˆƒ‚nt d„‡‡fd†ˆi DƒDƒƒˆ_ ˆi ˆ_ |i p"tˆƒiˆiiƒˆ_ntˆƒˆ_ˆiˆ_ˆiˆ_ˆiiˆ_tˆitiƒo#ˆipˆiˆiƒˆ_n|pˆiƒgˆ_tˆ_nCg}|D]}|ˆi|ƒqc~ˆ_t|ƒdjˆ_ˆiƒˆ_ ˆip ˆioˆi!ƒnˆi"ˆiƒˆ_#né|dj o¥dˆ_ ˆi$|ƒˆ_#t|ƒdjˆ_t|tƒo'|i o|iˆiiƒˆ_n |ˆ_tˆ_ˆ_ˆiƒˆ_ ˆi|ƒˆ_n7dˆ_tˆ_ˆ_ˆ_ˆ_ˆiƒˆ_ dS(NsNot an executable clause: %scss6x/|](\}}|dj o||fVqqWdS(N(R(t.0tkeytvalue((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pys s c3s2x+|]$}ˆi||iˆiƒfVqWdS(N(t bind_namestbind_processortdialect(RVt bindparam(tcompiledR(s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pys ‘s i(%R[t _connectiontroot_connectionR]tengineRt can_executeRRtdictRYt processorst result_mapRMtunicodetencodeR R8tisinserttisupdatet _autocommittshould_autocommitt isinstanceRt _TextClausetshould_autocommit_texttconstruct_paramstcompiled_parametersRR6R!t create_cursorR7t*_DefaultExecutionContext__process_defaultst1_DefaultExecutionContext__convert_compiled_paramsR9t+_DefaultExecutionContext__encode_param_keys(RR[R%R]R8R9t_[1]tm((R]Rs=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyR‚sT       "  # -    cCs |iiƒS(N(R^t_branch(R((s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyR%Áscsˆˆiip ˆiio,|o|SˆiiodgShgSn?‡fd†}g}|D]}|||ƒq`~phgSdS(s’apply string encoding to the keys of dictionary-based bind parameters. This is only used executing textual, non-compiled SQL expressions.cs2tˆtƒpˆSt‡‡fd†ˆDƒƒS(Nc3s2x+|]$}|iˆiiƒˆ|fVqWdS(N(RfR[R (RVtk(Rtd(s=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pys ×s (RkRb(Rx(R(Rxs=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pytprocÒsN((R[RRM(RtparamsRyRtRx((Rs=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pyt__encode_param_keysÅs  c Cs†|i}g}|iio|xc|D]m}g}xQ|iiD]C}||jo|i||||ƒƒq<|i||ƒq<W|i|ƒq#Wnë|ii }xÚ|D]Ò}h}|oj|ii}x£|D]O}||jo%||||ƒ||i|ƒ/s N(RbR]RYR[RR|t dialect_impltget_dbapi_typeRRR}R7t setinputsizest ExceptionR^t_handle_dbapi_exceptiontvaluesRfR (Rttypest inputsizesRWt typeenginetdbtypeR=((Rs=/usr/lib/python2.6/site-packages/sqlalchemy/engine/default.pytset_input_sizes(s8    !   ! !cCsÅ|ioºt|iiƒo£|ii|ƒ}|i}xx|D]p}||_x^|iiD]P}|io|i|ƒ}n|i |ƒ}|dj o|||i s jö