
H`Tc           @   s  d  Z  d d l Z d d l Z d d l m Z m Z m Z d d l m Z m	 Z	 d d l m
 Z d d l m Z m Z m Z m Z d d l Z d d l Z d d	 l m Z e j d
 e j e j B Z d e j f d     YZ d e j f d     YZ e e _ d S(   s  Default 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.

iNi   (   t
   reflectiont
   interfacest   resulti   (   t   compilert
   expression(   t   types(   t   exct   utilt   poolt
   processors(   t   events-   \s*(?:UPDATE|INSERT|CREATE|DELETE|DROP|ALTER)t   DefaultDialectc           B   s  e  Z d  Z e j Z e j Z e j Z	 e j
 Z e Z d Z e Z e Z e Z e Z e Z e Z e Z e Z e Z e Z e Z e j d e j d  f d e f d e j d  f d e j d  f d e f d	 e f d
 e f d e  f d e  f g	  Z! e Z" e j# r#e Z$ e Z% e Z& d0 Z( n e Z$ e Z% e Z& d Z( d Z) d Z* d0 Z+ e Z, e Z- i  Z. i  Z/ d Z0 e Z1 e Z2 e Z3 d0 Z4 d0 Z5 e Z6 d1 Z7 e d d0 d0 d0 d0 e d0 d0 d 	 Z8 e j9 d    Z: e; d    Z< e= d    Z> d   Z? d   Z@ d0 d  ZA d   ZB d   ZC d   ZD d0 d  ZE d   ZF d   ZG d   ZH d    ZI d!   ZJ d"   ZK d#   ZL d$   ZM d%   ZN d&   ZO d'   ZP d(   ZQ d)   ZR d*   ZS d0 d+  ZT d0 d,  ZU d0 d-  ZV d.   ZW d/   ZX RS(2   s!   Default implementation of Dialecti   t   convert_unicodet   forcet   pool_timeoutt   echot   debugt	   echo_poolt   pool_recyclet	   pool_sizet   max_overflowt   pool_threadlocalt   use_native_unicodet   use_encodingt   defaulti'  t   nameds   utf-8c
         K   s  t  |  d t  s) t j d |  j  n  | |  _ | |  _ t |  _ d  |  _
 | |  _ | d  k	 rn | |  _ n- |  j d  k	 r |  j j |  _ n |  j |  _ | d  k	 r | |  _ n  |  j d k |  _ |  j |   |  _ |  j |   |  _ | d  k	 r| |  _ n  | d  k	 r| |  _ n  | |  _ |	 rV|	 |  j k rVt j d |	 |  j f   n  |	 |  _ |  j d k rt j |  |  _ n' |  j d  k	 rt j |  j  |  _ n  t j |  j  |  _ t j |  j  |  _  d  S(	   Nt   ported_sqla_06s2   The %s dialect is not yet ported to the 0.6 formatt   qmarkt   formatt   numericsQ   Label length of %d is greater than this dialect's maximum identifier length of %dR   (   R   s   formatR   (!   t   getattrt   TrueR   t   warnt   nameR   t   encodingt   Falset
   positionalt   Nonet   _ischemat   dbapit
   paramstylet   default_paramstylet   implicit_returningt   preparert   identifier_preparert   type_compilert   supports_right_nested_joinst   supports_native_booleant   case_sensitivet   max_identifier_lengthR   t   ArgumentErrort   label_lengtht   description_encodingR	   t   to_unicode_processor_factoryt   _description_decodert   codecst
   getencodert   _encodert   _decoder(   t   selfR   R"   R(   R'   R*   R.   R0   R/   R3   t   kwargs(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   __init__   sJ    							c         C   s
   t  j   S(   N(   t   weakreft   WeakKeyDictionary(   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   _type_memos   s    c         C   s   |  j  d |  j S(   Nt   +(   R!   t   driver(   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   dialect_description   s    c         C   s   t  |  d t j  S(   Nt	   poolclass(   R   R   t	   QueuePool(   t   clst   url(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   get_pool_class   s    c         C   s   y |  j  |  |  _ Wn t k
 r2 d  |  _ n Xy |  j |  |  _ Wn t k
 re d  |  _ n Xy |  j | j  |  _ Wn t k
 r d  |  _ n X|  j	 |  |  _
 |  j d  k	 r |  j |  r d  |  _ |  _ n  |  j | j  d  S(   N(   t   _get_server_version_infot   server_version_infot   NotImplementedErrorR%   t   _get_default_schema_namet   default_schema_namet   get_isolation_levelt
   connectiont   default_isolation_levelt   _check_unicode_returnst   returns_unicode_stringsR4   t   _check_unicode_descriptionR6   t   do_rollback(   R;   RO   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
   initialize   s"    c         C   s   d S(   s  return a callable which sets up a newly created DBAPI connection.

        This is used to set dialect-wide per-connection options such as
        isolation modes, unicode modes, etc.

        If a callable is returned, it will be assembled into a pool listener
        that receives the direct DBAPI connection, with all wrappers removed.

        If None is returned, no listener will be generated.

        N(   R%   (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
   on_connect   s    c            s  t  j r  j r t  j  n	 t  j   j r@  j     n i         f d   } t j t j	 d  t
 j d   t j t j	 d  t
 j d   g } | r | | 7} n  t g  | D] } | |  ^ q  } | j t t g  r d S| t t g  k Sd  S(   Nc            s    t  j |  g  j d    } y<  j j   }  j | |    | j   } | j   Wn( t j	 k
 r } t
 j d |  t SXt | d t
 j  Sd  S(   Nt   dialects2   Exception attempting to detect unicode returns: %ri    (   R   t   selectt   compileRO   t   cursort   _cursor_executet   fetchonet   closeR   t
   DBAPIErrorR   R    R#   t
   isinstancet	   text_type(   t   testt	   statementRZ   t   rowt   de(   t
   parametersR;   RO   t   cast_to(    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   check_unicode  s    !	s   'test plain returns'i<   s   'test unicode returns't   conditional(   R   t   py2kt   supports_unicode_statementst   binary_typeR`   R$   t   execute_sequence_formatR   t   castt   literal_columnt   sqltypest   VARCHARt   Unicodet   sett
   issupersetR   R#   (   R;   RO   t   additional_testsRg   t   testsRa   t   results(    (   Re   R;   RO   Rf   s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRQ     s&    		%c         C   s   t  j r |  j r t  j } n	 t  j } | j j   } z\ | j | t j	 t j
 d  j d  g  j d |     t | j d d t  j  SWd  | j   Xd  S(   Ns   'x't
   some_labelRW   i    (   R   Ri   Rj   Rk   R`   RO   RZ   t   executeR   RX   Rn   t   labelRY   R_   t   descriptionR]   (   R;   RO   Rf   RZ   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRS   ?  s    	!c         C   s   t  j | |  j  S(   s)  Provide a database-specific :class:`.TypeEngine` object, given
        the generic object which comes from the types module.

        This method looks for a dictionary called
        ``colspecs`` as a class or instance-level variable,
        and passes on to :func:`.types.adapt_type`.

        (   Ro   t
   adapt_typet   colspecs(   R;   t   typeobj(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   type_descriptorV  s    	c         C   s%   t  j j |  } | j | | |  S(   N(   R    t	   Inspectort   from_enginet   reflecttable(   R;   RO   t   tablet   include_columnst   exclude_columnst   insp(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR   a  s    c         K   s    i |  j  | | d | | d 6S(   s   Compatibility method, adapts the result of get_primary_keys()
        for those dialects which don't implement get_pk_constraint().

        t   schemat   constrained_columns(   t   get_primary_keys(   R;   t   connt
   table_nameR   t   kw(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   get_pk_constraintf  s    c         C   s8   t  |  |  j k r4 t j d | |  j f   n  d  S(   Ns7   Identifier '%s' exceeds maximum length of %d characters(   t   lenR1   R   t   IdentifierError(   R;   t   ident(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   validate_identifierq  s    c         O   s   |  j  j | |   S(   N(   R'   t   connect(   R;   t   cargst   cparams(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR   x  s    c         C   s&   | j    } | j | j  g  | g S(   N(   t   translate_connect_argst   updatet   query(   R;   RG   t   opts(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   create_connect_args{  s    c            sA   d | k r= | d   t  j | d     f d    } n  d  S(   Nt   isolation_levelt   engine_connectc            s   | s  j  |     n  d  S(   N(   t   _set_connection_isolation(   RO   t   branch(   R   R;   (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   set_isolation  s    (   R
   t   listens_for(   R;   t   engineR   R   (    (   R   R;   s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   set_engine_execution_options  s    
c         C   s'   d | k r# |  j  | | d  n  d  S(   NR   (   R   (   R;   RO   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt    set_connection_execution_options  s    c         C   s0   |  j  | j |  | j j j j |  j  d  S(   N(   t   set_isolation_levelRO   t   _connection_recordt   finalize_callbackt   appendt   reset_isolation_level(   R;   RO   t   level(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR     s    c         C   s   d  S(   N(    (   R;   t   dbapi_connection(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   do_begin  s    c         C   s   | j    d  S(   N(   t   rollback(   R;   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRT     s    c         C   s   | j    d  S(   N(   t   commit(   R;   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt	   do_commit  s    c         C   s   | j    d  S(   N(   R]   (   R;   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   do_close  s    c         C   s   d t  j d d  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_%032xi    i   i   l	                    (   t   randomt   randint(   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
   create_xid  s    c         C   s   | j  t j |   d  S(   N(   Rx   R   t   SavepointClause(   R;   RO   R!   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   do_savepoint  s    c         C   s   | j  t j |   d  S(   N(   Rx   R   t   RollbackToSavepointClause(   R;   RO   R!   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   do_rollback_to_savepoint  s    c         C   s   | j  t j |   d  S(   N(   Rx   R   t   ReleaseSavepointClause(   R;   RO   R!   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   do_release_savepoint  s    c         C   s   | j  | |  d  S(   N(   t   executemany(   R;   RZ   Rb   Re   t   context(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   do_executemany  s    c         C   s   | j  | |  d  S(   N(   Rx   (   R;   RZ   Rb   Re   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
   do_execute  s    c         C   s   | j  |  d  S(   N(   Rx   (   R;   RZ   Rb   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   do_execute_no_params  s    c         C   s   t  S(   N(   R#   (   R;   t   eRO   RZ   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   is_disconnect  s    c         C   s   |  j  | |  j  d  S(   N(   R   RP   (   R;   t
   dbapi_conn(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR     s    N(    (Y   t   __name__t
   __module__t   __doc__R   t   SQLCompilert   statement_compilert   DDLCompilert   ddl_compilert   GenericTypeCompilerR-   t   IdentifierPreparerR+   R   t   supports_altert   default_sequence_baset   tupleRl   t   supports_viewsR#   t   supports_sequencest   sequences_optionalt"   preexecute_autoincrement_sequencest   postfetch_lastrowidR*   R.   t   supports_native_enumR/   t   supports_simple_order_by_labelR   t   immutabledictt   bool_or_strt   intt   boolt   engine_config_typest   supports_native_decimalt   py3kRj   t   supports_unicode_bindsRR   R%   R4   R!   R1   t   max_index_name_lengtht   supports_sane_rowcountt   supports_sane_multi_rowcountt   dbapi_type_mapR|   R)   t   supports_default_valuest   supports_empty_insertt   supports_multivalues_insertRJ   t   construct_argumentst   requires_name_normalizet   reflection_optionsR=   t   memoized_propertyR@   t   propertyRC   t   classmethodRH   RU   RV   RQ   RS   R~   R   R   R   R   R   R   R   R   R   RT   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR      s   											*	1		4																				t   DefaultExecutionContextc           B   s  e  Z e Z e Z e Z e Z e Z d Z	 d Z
 d Z d Z d Z d Z e Z e Z d Z e d     Z e d    Z e d    Z e d    Z e j d    Z e j d    Z e j d    Z d   Z e d    Z d	   Z d
   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& e d    Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- d d d  Z. d   Z/ d   Z0 d   Z1 d   Z2 RS(   c         C   s"  |  j  |   } | | _ | | _ | | _ | j | _ | | _ } t | _ | j j	 | _
 | j	 r t | j
  | _
 | j
 j | j	  n  | j s t j |  | _ | j | j  d | _ n t j |  | _ | _ | j   | _ g  | _ | j r| j   g | _ n i  g | _ | S(   s8   Initialize execution context for a DDLElement construct.i    (   t   __new__RW   t   root_connectiont   _dbapi_connectionR   t   compiledR   t   isddlRb   t   _execution_optionst   execution_optionst   dictR   Rj   R   R`   t   unicode_statementR9   t   create_cursorRZ   t   compiled_parametersR$   Rl   Re   (   RF   RW   RO   R   t   compiled_ddlR;   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt	   _init_ddl  s*    								c      
   C   s  |  j  |   } | | _ | | _ | | _ | j | _ | | _ | j sZ t j d   n  | j	 j
 | _ | j
 r t | j  | _ | j j | j
  n  | j | _ t j |  | _ | j s | j j | j j  | _	 n | j | _	 | j | _ | j | _ | j | _ | j s*| j s*| j rat | j	 j  | _ t | j oU| j	 j  | _ n  | s|| j   g | _ nL g  t |  D]! \ } } | j | d | ^ q| _ t  |  d k | _! | j"   | _# | j s| j r#| j j$ | _% | j j& | _' | j j | _( | j)   n  | j* }	 g  } | j+ rxb| j D]t }
 g  } xO | j j, D]A } | |	 k r| j- |	 | |
 |   q^| j- |
 |  q^W| j- | j. |   qEWn | j } x | j D] }
 i  } | rIx |
 D]U } | |	 k r'|	 | |
 |  | | j/ |  d <q|
 | | | j/ |  d <qWnF xC |
 D]; } | |	 k r}|	 | |
 |  | | <qP|
 | | | <qPW| j- |  qW| j. |  | _0 | S(   s6   Initialize execution context for a Compiled construct.s   Not an executable clauset   _group_numberi   i    (1   R   RW   R   R   R   R   t   can_executeR   R2   Rb   R   R   R   R   t
   result_mapR   R`   R   Rj   t   encodeR"   t   isinsertt   isupdatet   isdeleteR   t
   _returningt   _is_explicit_returningt	   returningt   _is_implicit_returningt   construct_paramsR   t	   enumerateR   R   R   RZ   t	   postfetcht   postfetch_colst   prefetcht   prefetch_colst   returning_colst*   _DefaultExecutionContext__process_defaultst   _bind_processorsR$   t   positiontupR   Rl   R9   Re   (   RF   RW   RO   R   R   Re   R;   t   grpt   mR	   t   compiled_paramst   paramt   keyR   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   _init_compiled  sz    								4		
("c            s  |  j  |   }   | _ | | _ | | _ | j | _ | j | _ | sx | j j ri   j   g | _	 q(i  g | _	 n t
 | d   j  r | | _	 n t
 | d t  r  j r | | _	 q(g  | D]%  t    f d    D  ^ q p i  g | _	 n% g  | D] }   j |  ^ q
| _	 t |  d k | _   j r{t
 | t j  r{| | _   j |  d | _ n | | _ | _ | j   | _ | S(   s8   Initialize execution context for a string SQL statement.i    c         3   s,   |  ]" }   j  |  d   | f Vq d S(   i    N(   R9   (   t   .0t   k(   RW   t   d(    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	   <genexpr>r  s    i   (   R   RW   R   R   R   R   R   R$   Rl   Re   R_   R   Rj   R   R   R   R`   R   R9   Rb   R   RZ   (   RF   RW   RO   R   Rb   Re   R;   t   p(    (   RW   R  s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   _init_statementX  s8    				/"
	c         C   sU   |  j  |   } | | _ | | _ | | _ | j | _ | j | _ | j   | _ | S(   s;   Initialize execution context for a ColumnDefault construct.(	   R   RW   R   R   R   R   R   R   RZ   (   RF   RW   RO   R   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   _init_default  s    			c         C   s   |  j  j d t  S(   Nt   no_parameters(   R   t   getR#   (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR    s    c         C   s   |  j  p |  j p |  j S(   N(   R   R   R   (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   is_crud  s    c         C   sX   |  j  j d |  j r( |  j r( t j p+ t  } | t j k rP |  j |  j  S| Sd  S(   Nt
   autocommit(	   R   R  R   Rb   R   t   PARSE_AUTOCOMMITR#   t   should_autocommit_textR   (   R;   R  (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   should_autocommit  s    
			c         C   s   |  j  } t | t j  rA |  j j rA |  j j |  d } n  |  j j r_ |  j j   } n i  } | j	 |  j
 | | d |  |  j
 j   d } | d k	 r | j |  j |  j
 j d d  } | r | |  Sn  | S(   s  Execute a string statement on the current cursor, returning a
        scalar result.

        Used to fire off sequences, default phrases, and "select lastrowid"
        types of statements individually or in the context of a parent INSERT
        or UPDATE statement.

        i    R   i   N(   R   R_   R   R`   RW   Rj   R9   R$   Rl   R[   RZ   R\   R%   t   _cached_result_processorRz   (   R;   t   stmtt   type_R   t   default_paramst   rt   proc(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   _execute_scalar  s     
	c         C   s   |  j  j   S(   N(   R   t   _branch(   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRO     s    c         C   s   t  j |  S(   N(   t   AUTOCOMMIT_REGEXPt   match(   R;   Rb   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR    s    c         C   s   |  j  j   S(   N(   R   RZ   (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR     s    c         C   s   d  S(   N(    (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   pre_exec  s    c         C   s   d  S(   N(    (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt	   post_exec  s    c         C   s   | j  |  j |  S(   s   Return a 'result processor' for a given type as present in
        cursor.description.

        This has a default implementation that dialects can override
        for context-sensitive result type handling.

        (   R  RW   (   R;   R  t   colnamet   coltype(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   get_result_processor  s    c         C   s
   |  j  j S(   s  return self.cursor.lastrowid, or equivalent, after an INSERT.

        This may involve calling special cursor functions,
        issuing a new SELECT on the cursor (or a new one),
        or returning a stored value that was
        calculated within post_exec().

        This function will only be called for dialects
        which support "implicit" primary key generation,
        keep preexecute_autoincrement_sequences set to False,
        and when no explicit id value was bound to the
        statement.

        The function is called once, directly after
        post_exec() and before the transaction is committed
        or ResultProxy is generated.   If the post_exec()
        method assigns a value to `self._lastrowid`, the
        value is used in place of calling get_lastrowid().

        Note that this method is *not* equivalent to the
        ``lastrowid`` method on ``ResultProxy``, which is a
        direct proxy to the DBAPI ``lastrowid`` accessor
        in all cases.

        (   RZ   t	   lastrowid(   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   get_lastrowid  s    c         C   s   d  S(   N(    (   R;   R   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   handle_dbapi_exception  s    c         C   s   t  j |   S(   N(   R   t   ResultProxy(   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   get_result_proxy   s    c         C   s
   |  j  j S(   N(   RZ   t   rowcount(   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR1    s    c         C   s
   |  j  j S(   N(   RW   R   (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR     s    c         C   s
   |  j  j S(   N(   RW   R   (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR   
  s    c      	   C   s   |  j  r |  j r |  j j r |  j j r |  j sF d  |  j k r |  j j j	 } |  j
   } | j } | d  k	 r | j j |  j d   } | d  k	 r | |  } q n  g  t | j |  j  D]$ \ } } | | k r | n | ^ q |  _ n  d  S(   N(   R   R   R   t   inlineRW   R   t   inserted_primary_keyR%   Rb   R   R-  t   _autoincrement_columnt   typeR  t   zipt   primary_key(   R;   R   R,  t   autoinc_colR"  t   ct   v(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   post_insert  s$    


		c         C   s   |  j  j j } | j   } g  } xP t | j |  j  D]9 \ } } | d  k	 r_ | j |  q7 | j | |  q7 W| |  _ | |  _	 d  S(   N(
   R   Rb   R   R\   R6  R7  R3  R%   R   t   returned_defaults(   R;   t   resultproxyR   Rc   t   ipkR9  R:  (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   _fetch_implicit_returning&  s    "	c         C   s   | j    } | |  _ d  S(   N(   R\   R<  (   R;   R=  Rc   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt    _fetch_implicit_update_returning4  s    c         C   s   |  j  s |  j o t |  j  S(   N(   R   R   R   R  (   R;   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   lastrow_has_defaults8  s    c   	         s  t    j d  s d St   f d     j j D  }   j j rg  } xn   j j D]` } | | } | j   j  j   j j	  } | d k	 rW | s | | k rW | j |  qW qW Wy   j j |   Wqt k
 r }   j j | d d d    qXn i  } x   j j j   D] } | | } | j   j  j   j j	  } | d k	 r| sm| | k r| r| j | |  } n    j j s  j j |  d } n  | | | <qqWy   j j |   Wn/ t k
 r}   j j | d d d    n Xd S(   s&  Given a cursor and ClauseParameters, call the appropriate
        style of ``setinputsizes()`` on the cursor, using DB-API types
        from the bind parameter's ``TypeEngine`` objects.

        This method only called by those dialects which require it,
        currently cx_oracle.

        t
   bind_namesNc         3   s(   |  ] }   j  j | | j f Vq d  S(   N(   R   RB  R5  (   R  t	   bindparam(   R;   (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	   <genexpr>J  s   i    (   t   hasattrR   R   RB  RW   R$   R	  t   dialect_implt   get_dbapi_typeR'   R%   R   RZ   t   setinputsizest	   ExceptionR   t   _handle_dbapi_exceptiont   valuesR  R   R9   (	   R;   t	   translatet   exclude_typesR   t
   inputsizesR  t
   typeenginet   dbtypeR   (    (   R;   s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   set_input_sizes<  sH    

	
	c         C   s   | j  r |  j | |  S| j r/ | j |   S| j r{ |  j } t j | j g  j d |  } | j	 | d i   j
   S| j Sd  S(   Nt   bind(    (   t   is_sequencet   fire_sequencet   is_callablet   argt   is_clause_elementRO   R   RX   RY   t   _execute_compiledt   scalar(   R;   R   R  R   R9  (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   _exec_defaultn  s    				!c         C   s-   | j  d  k r d  S|  j | j  | j  Sd  S(   N(   R   R%   RY  R5  (   R;   t   column(    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   get_insert_default|  s    c         C   s-   | j  d  k r d  S|  j | j  | j  Sd  S(   N(   t   onupdateR%   RY  R5  (   R;   RZ  (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   get_update_default  s    c         C   s  |  j  j d } |  j rFt |  j  j  ri  } xs |  j D]h } |  j rr | j rr | j j rr | j j	 | | <q; |  j
 r; | j r; | j j r; | j j	 | | <q; q; Wx |  j D] } | |  _ xs |  j D]h } | | k r | | } n* |  j r|  j |  } n |  j |  } | d k	 r | | | |  <q q Wq W|  ` qn |  j d |  _ } x] |  j  j D]O } |  j r|  j |  } n |  j |  } | d k	 rg| | | |  <qgqgW|  ` |  j rg  |  j  j j j D]% } |  j d j | |  d  ^ q|  _ n  d S(   s}   Generate default values for compiled insert/update statements,
        and generate inserted_primary_key collection.
        i   i    N(   R   t   _key_getters_for_crud_columnR   R   R  R  R   R   t	   is_scalarRU  R   R\  R   t   current_parametersR[  R]  R%   Rb   R   R7  R  R3  (   R;   t
   key_gettert   scalar_defaultsR9  R  t   valR   (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   __process_defaults  s>    					N(3   R   R   R#   R   R   R   R   R   R%   R   R   Rb   R  R  R  R   R   t   _translate_colnameR   R   R  R  R  R   R   R  R  R  R#  R   RO   R  R   R'  R(  R+  R-  R.  R0  R1  R   R   R;  R?  R@  RA  RP  RY  R[  R]  R  (    (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR     sV   "`-	 					
									2			(   R   t   reR   t    R    R   R   t   sqlR   R   R   Ro   R   R   R   R	   R7   R>   R
   RY   t   It   UNICODER%  t   DialectR   t   ExecutionContextR   t   execution_ctx_cls(    (    (    s_   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt   <module>   s"   "  