
    ؄_                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  G d d	e          Z	 G d
 de          Z
 G d de          ZeZdS )a  

.. dialect:: mysql+oursql
    :name: OurSQL
    :dbapi: oursql
    :connectstring: mysql+oursql://<user>:<password>@<host>[:<port>]/<dbname>
    :url: http://packages.python.org/oursql/

.. note::

    The OurSQL MySQL dialect is legacy and is no longer supported upstream,
    and is **not tested as part of SQLAlchemy's continuous integration**.
    The recommended MySQL dialects are mysqlclient and PyMySQL.

Unicode
-------

Please see :ref:`mysql_unicode` for current recommendations on unicode
handling.


   )BIT)MySQLDialect)MySQLExecutionContext   )types)utilc                       e Zd Zd ZdS )
_oursqlBITc                     dS )z'oursql already converts mysql bits, so.N )selfdialectcoltypes      e/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/dialects/mysql/oursql.pyresult_processorz_oursqlBIT.result_processor(   s	     t    N)__name__
__module____qualname__r   r   r   r   r
   r
   '   s#            r   r
   c                   $    e Zd Zed             ZdS )MySQLExecutionContext_oursqlc                 8    | j                             dd          S )N_oursql_plain_queryF)execution_optionsget)r   s    r   plain_queryz(MySQLExecutionContext_oursql.plain_query/   s    %))*?GGGr   N)r   r   r   propertyr   r   r   r   r   r   .   s2        H H XH H Hr   r   c                   8   e Zd ZdZej        rdZdZdZdZ	dZ
eZ ej        ej        ej        ej        eei          Zed             ZddZd Zd Zd Zd	 Z	 ddZ	 ddZddZddZddZddZ ddZ!d Z"d Z#	 ddZ$d Z%d Z&d Z'd Z(ddZ)ddZ*ddZ+dS )MySQLDialect_oursqloursqlTc                      t          d          S )Nr    )
__import__)clss    r   dbapizMySQLDialect_oursql.dbapiE   s    (###r   Nc                 v    |r |j         r|                    |d           dS |                    ||           dS )zMProvide an implementation of
        *cursor.execute(statement, parameters)*.Tr   N)r   execute)r   cursor	statement
parameterscontexts        r   
do_executezMySQLDialect_oursql.do_executeI   sL      	2w* 	2NN9$N77777NN9j11111r   c                 X    |                                                     dd           d S )NBEGINTr&   )r(   r'   r   
connections     r   do_beginzMySQLDialect_oursql.do_beginR   s-    ##G#>>>>>r   c                 D   t           j        r|j                            |          }nG| j        }|j                            |                    |                                        |          }d|z  }|                    d                              ||z             d S )Nz'%s'Tr   )	r   py2kr0   _escape_string_connection_charsetencodedecoder   r'   )r   r0   queryxidargcharsets         r   	_xa_queryzMySQLDialect_oursql._xa_queryU   s    9 	'66s;;CC.G'66

7## fWoo  sl$$$>>FFCK	
 	
 	
 	
 	
r   c                 4    |                      |d|           d S )NzXA BEGIN %sr=   r   r0   r:   s      r   do_begin_twophasez%MySQLDialect_oursql.do_begin_twophaseg   s    z=#66666r   c                 b    |                      |d|           |                      |d|           d S )N	XA END %szXA PREPARE %sr?   r@   s      r   do_prepare_twophasez'MySQLDialect_oursql.do_prepare_twophasej   s4    z;444z?C88888r   Fc                 f    |s|                      |d|           |                      |d|           d S )NrC   zXA ROLLBACK %sr?   r   r0   r:   is_preparedrecovers        r   do_rollback_twophasez(MySQLDialect_oursql.do_rollback_twophasen   s?      	9NN:{C888z#3S99999r   c                 d    |s|                      ||           |                     |d|           d S )NzXA COMMIT %s)rD   r=   rF   s        r   do_commit_twophasez&MySQLDialect_oursql.do_commit_twophaseu   s>      	6$$Z555z>377777r   c                 |    t          j        | |                                                    d          ||          S NTr3   )r   	has_tableconnectr   )r   r0   
table_nameschemas       r   rN   zMySQLDialect_oursql.has_table~   s@    %  22t2LL	
 
 	
r   c                 z    t          j        | |                                                    d          |fd|i|S NTr3   rQ   )r   get_table_optionsrO   r   r   r0   rP   rQ   kws        r   rT   z%MySQLDialect_oursql.get_table_options   sV    -  22t2LL
 
 	

 
 
 	
r   c                 z    t          j        | |                                                    d          |fd|i|S rS   )r   get_columnsrO   r   rU   s        r   rX   zMySQLDialect_oursql.get_columns   sV    '  22t2LL
 
 	

 
 
 	
r   c                 x    t          j        | |                                                    d          fd|i|S rS   )r   get_view_namesrO   r   r   r0   rQ   rV   s       r   rZ   z"MySQLDialect_oursql.get_view_names   sS    *  22t2LL
 
 
 	
 
 	
r   c                 z    t          j        | |                                                    d          |          S rM   )r   get_table_namesrO   r   r[   s       r   r]   z#MySQLDialect_oursql.get_table_names   s=    +  22t2LL
 
 	
r   c                 t    t          j        | |                                                    d          fi |S rM   )r   get_schema_namesrO   r   )r   r0   rV   s      r   r_   z$MySQLDialect_oursql.get_schema_names   sI    ,  22t2LL
 
 
 
 	
r   c                 T    t          j        | |                    d                    S rM   )r   
initializer   r/   s     r   ra   zMySQLDialect_oursql.initialize   s-    &*..4.HH
 
 	
r   c                     t          j        | |                    d                              d          |||          S )NT)close_with_resultr3   )r   _show_create_table_contextual_connectr   )r   r0   tabler<   	full_names        r   rd   z&MySQLDialect_oursql._show_create_table   sQ     .**"& +  D99
 
 	
r   c                     t          || j        j                  r8|j        d u o.d|j        d         vo|j        d                             d          S |j        dv S )Nr(   r   closed)i  i  i  i  i  )
isinstancer$   ProgrammingErrorerrnoargsendswith)r   er0   r(   s       r   is_disconnectz!MySQLDialect_oursql.is_disconnect   sf    a455 	=4 1AF1I-1F1I&&x00 7<<<r   c                    |                     ddd          }|                    |j                   t          j        |dt
                     t          j        |dt                     t          j        |dt                     t          j        |dt                     t          j        |d	t                     |                    d	d
          rd |d<   nt          j        |dt                     |	                    dd          |d<   t          j        |dt                     |
                    dd           i }dD ]?}||v r9||         ||dd          <   t          j        ||dd          t                     ||= @|r||d<   g |gS )Ndbuserpasswd)databaseusernamepasswordportcompressautopingraise_on_warningsdefault_charsetFr<   use_unicodeT
found_rows)ssl_cassl_keyssl_cert
ssl_capath
ssl_cipher   ssl)translate_connect_argsupdater9   r   coerce_kw_typeintboolpopstrr   
setdefault)r   urloptsr   keys        r   create_connect_argsz'MySQLDialect_oursql.create_connect_args   s   ))FX * 
 
 	CID&#...D*d333D*d333D"5t<<<D"3T:::88%u-- 	6"DOOi555"hh}d;;]D-666 	d+++
 
	 
	C d{{#CyCG#CQRR#666I 	DKDzr   c                     |j         S N)rl   )r   	exceptions     r   _extract_error_codez'MySQLDialect_oursql._extract_error_code   s
    r   c                     |j         j        S )z:Sniff out the character set in use for connection results.)r0   r<   r/   s     r   _detect_charsetz#MySQLDialect_oursql._detect_charset   s     $,,r   c                 *    |                                 S z.oursql isn't super-broken like MySQLdb, yaaay.)fetchallr   rpr<   s      r   _compat_fetchallz$MySQLDialect_oursql._compat_fetchall       {{}}r   c                 *    |                                 S r   )fetchoner   s      r   _compat_fetchonez$MySQLDialect_oursql._compat_fetchone   r   r   c                 *    |                                 S r   )firstr   s      r   _compat_firstz!MySQLDialect_oursql._compat_first  s    xxzzr   r   )TF)NN),r   r   r   driverr   r4   supports_unicode_bindssupports_unicode_statementssupports_native_decimalsupports_sane_rowcountsupports_sane_multi_rowcountr   execution_ctx_clsupdate_copyr   colspecssqltypesTimer   r
   classmethodr$   r,   r1   r=   rA   rD   rI   rK   rN   rT   rX   rZ   r]   r_   ra   rd   rp   r   r   r   r   r   r   r   r   r   r   r   4   s!       Fy +!%&*#"!#' 4tx}c:N H $ $ [$2 2 2 2? ? ?
 
 
$7 7 79 9 9
 :?: : : : :?8 8 8 8
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 

 
 
 :>
 
 
 
= = =& & &P  - - -
           r   r   N)__doc__baser   r   r    r   r   r   r
   r   r   r   r   r   r   <module>r      s   0             ' ' ' ' ' ' ! ! ! ! ! !             H H H H H#8 H H HO O O O O, O O Od r   