
    +hK!                         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y)a  

.. dialect:: mysql+oursql
    :name: OurSQL
    :dbapi: oursql
    :connectstring: mysql+oursql://<user>:<password>@<host>[:<port>]/<dbname>
    :url: https://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.

.. deprecated:: 1.4 The OurSQL DBAPI is deprecated and will be removed
   in a future version. Please use one of the supported DBAPIs to
   connect to mysql.

Unicode
-------

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


   )BIT)MySQLDialect)MySQLExecutionContext   )types)utilc                       e Zd Zd Zy)
_oursqlBITc                      y)z'oursql already converts mysql bits, so.N )selfdialectcoltypes      S/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/oursql.pyresult_processorz_oursqlBIT.result_processor,   s         N)__name__
__module____qualname__r   r   r   r   r
   r
   +   s    r   r
   c                       e Zd Zed        Zy)MySQLExecutionContext_oursqlc                 :    | j                   j                  dd      S )N_oursql_plain_queryF)execution_optionsget)r   s    r   plain_queryz(MySQLExecutionContext_oursql.plain_query3   s    %%))*?GGr   N)r   r   r   propertyr   r   r   r   r   r   2   s    H Hr   r   c                   `   e Zd 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,y)MySQLDialect_oursqloursqlTc                 F    t        j                  dd       t        d      S )NzThe OurSQL DBAPI is deprecated and will be removed in a future version. Please use one of the supported DBAPIs to connect to mysql.z1.4)versionr    )r   warn_deprecated
__import__)clss    r   dbapizMySQLDialect_oursql.dbapiJ   s'      		
 (##r   Nc                 l    |r |j                   r|j                  |d       y|j                  ||       y)zMProvide an implementation of
        *cursor.execute(statement, parameters)*.Tr   N)r   execute)r   cursor	statement
parameterscontexts        r   
do_executezMySQLDialect_oursql.do_executeT   s-     w**NN9$N7NN9j1r   c                 F    |j                         j                  dd       y )NBEGINTr(   )r*   r)   r   
connections     r   do_beginzMySQLDialect_oursql.do_begin]   s    ##G#>r   c                 8   t         j                  r|j                  j                  |      }nE| j                  }|j                  j                  |j                  |            j                  |      }d|z  }|j                  d      j                  ||z         y )Nz'%s'Tr   )	r   py2kr2   _escape_string_connection_charsetencodedecoder   exec_driver_sql)r   r2   queryxidargcharsets         r   	_xa_queryzMySQLDialect_oursql._xa_query`   s    99''66s;C..G''66

7#fWo  sl$$$>NNCK	
r   c                 *    | j                  |d|       y )NzXA BEGIN %sr@   r   r2   r=   s      r   do_begin_twophasez%MySQLDialect_oursql.do_begin_twophaser   s    z=#6r   c                 P    | j                  |d|       | j                  |d|       y )N	XA END %szXA PREPARE %srB   rC   s      r   do_prepare_twophasez'MySQLDialect_oursql.do_prepare_twophaseu   s"    z;4z?C8r   c                 T    |s| j                  |d|       | j                  |d|       y )NrF   zXA ROLLBACK %srB   r   r2   r=   is_preparedrecovers        r   do_rollback_twophasez(MySQLDialect_oursql.do_rollback_twophasey   s(     NN:{C8z#3S9r   c                 R    |s| j                  ||       | j                  |d|       y )NzXA COMMIT %s)rG   r@   rI   s        r   do_commit_twophasez&MySQLDialect_oursql.do_commit_twophase   s'     $$Z5z>37r   c                 n    t        j                  | |j                         j                  d      ||      S NTr5   )r   	has_tableconnectr   )r   r2   
table_nameschemas       r   rQ   zMySQLDialect_oursql.has_table   s8    %% 22t2L	
 	
r   c                 r    t        j                  | |j                         j                  d      |fd|i|S NTr5   rT   )r   get_table_optionsrR   r   r   r2   rS   rT   kws        r   rW   z%MySQLDialect_oursql.get_table_options   sI    -- 22t2L
 	

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

 
 	
r   c                 p    t        j                  | |j                         j                  d      fd|i|S rV   )r   get_view_namesrR   r   r   r2   rT   rY   s       r   r]   z"MySQLDialect_oursql.get_view_names   sF    ** 22t2L
 
 	
 	
r   c                 l    t        j                  | |j                         j                  d      |      S rP   )r   get_table_namesrR   r   r^   s       r   r`   z#MySQLDialect_oursql.get_table_names   s5    ++ 22t2L
 	
r   c                 l    t        j                  | |j                         j                  d      fi |S rP   )r   get_schema_namesrR   r   )r   r2   rY   s      r   rb   z$MySQLDialect_oursql.get_schema_names   s<    ,, 22t2L
 
 	
r   c                 N    t        j                  | |j                  d            S rP   )r   
initializer   r1   s     r   rd   zMySQLDialect_oursql.initialize   s(    &&*..4.H
 	
r   c                 t    t        j                  | |j                  d      j                  d      |||      S )NT)close_with_resultr5   )r   _show_create_tablerR   r   )r   r2   tabler?   	full_names        r   rg   z&MySQLDialect_oursql._show_create_table   sJ     ..6HH$( I  
 	
r   c                     t        || j                  j                        rA|j                  d u xr1 d|j                  d   vxr |j                  d   j                  d      S |j                  dv S )Nr*   r   closed)i  i  i  i  i  )
isinstancer&   ProgrammingErrorerrnoargsendswith)r   er2   r*   s       r   is_disconnectz!MySQLDialect_oursql.is_disconnect   sh    a4454 1AFF1I-1FF1I&&x0 77<<<r   c                    |j                  ddd      }|j                  |j                         t        j                  |dt
               t        j                  |dt               t        j                  |dt               t        j                  |dt               t        j                  |d	t               |j                  d	d
      rd |d<   nt        j                  |dt               |j                  dd      |d<   t        j                  |dt               |j                  dd       i }dD ]3  }||v s||   ||dd  <   t        j                  ||dd  t               ||= 5 |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updater<   r   coerce_kw_typeintboolpopstrr   
setdefault)r   urloptsr   keys        r   create_connect_argsz'MySQLDialect_oursql.create_connect_args   sV   ))FX * 
 	CIID&#.D*d3D*d3D"5t<D"3T:88%u-"DOi5"hh}d;]D-6 	d+
 
	C d{#CyCG##CQR#6I
	 DKDzr   c                     |j                   S N)rn   )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.)r2   r?   r1   s     r   _detect_charsetz#MySQLDialect_oursql._detect_charset   s     $$,,,r   c                 "    |j                         S z.oursql isn't super-broken like MySQLdb, yaaay.)fetchallr   rpr?   s      r   _compat_fetchallz$MySQLDialect_oursql._compat_fetchall      {{}r   c                 "    |j                         S r   )fetchoner   s      r   _compat_fetchonez$MySQLDialect_oursql._compat_fetchone	  r   r   c                 "    |j                         S r   )firstr   s      r   _compat_firstz!MySQLDialect_oursql._compat_first  s    xxzr   r   )TF)NN)-r   r   r   driversupports_statement_cacher   r6   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.   r3   r@   rD   rG   rL   rN   rQ   rW   r[   r]   r`   rb   rd   rg   rr   r   r   r   r   r   r   r   r   r   r   r   8   s    F#yy!%&*#"!#' 4tx}}c:NH $ $2?
$79
 :?: :?8






 :>
=&P-
r   r   N)__doc__baser   r   r    r   r   r   r
   r   r   r   r   r   r   <module>r      sL   8   ' !  H#8 HV, Vr r   