o
    =aK!                     @   sx   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	 d	eZ	G d
d deZ
G d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: 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                   @   s   e Zd Zdd ZdS )
_oursqlBITc                 C   s   dS )z'oursql already converts mysql bits, so.N )selfdialectcoltyper	   r	   V/var/www/html/gps/gps/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/oursql.pyresult_processor,   s   z_oursqlBIT.result_processorN)__name__
__module____qualname__r   r	   r	   r	   r   r   +   s    r   c                   @   s   e Zd Zedd ZdS )MySQLExecutionContext_oursqlc                 C   s   | j ddS )N_oursql_plain_queryF)execution_optionsget)r
   r	   r	   r   plain_query3   s   z(MySQLExecutionContext_oursql.plain_queryN)r   r   r   propertyr   r	   r	   r	   r   r   2   s    r   c                   @   s&  e Zd ZdZdZejrdZdZdZ	dZ
dZeZeejejejeeiZedd Zd3ddZdd	 Zd
d Zdd Zdd Z	d4ddZ	d4ddZd3ddZd3ddZd3ddZ d3ddZ!d3ddZ"dd  Z#d!d" Z$	d5d#d$Z%d%d& Z&d'd( Z'd)d* Z(d+d, Z)d3d-d.Z*d3d/d0Z+d3d1d2Z,dS )6MySQLDialect_oursqloursqlTc                 C   s   t jd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__)clsr	   r	   r   dbapiJ   s
   zMySQLDialect_oursql.dbapiNc                 C   s,   |r|j r|j|dd dS ||| dS )zMProvide an implementation of
        *cursor.execute(statement, parameters)*.Tr   N)r   execute)r
   cursor	statement
parameterscontextr	   r	   r   
do_executeT   s   
zMySQLDialect_oursql.do_executec                 C   s   |  jddd d S )NBEGINTr   )r!   r    r
   
connectionr	   r	   r   do_begin]   s   zMySQLDialect_oursql.do_beginc                 C   sT   t jr
|j|}n| j}|j|||}d| }|jdd||  d S )Nz'%s'Tr   )	r   py2kr(   _escape_string_connection_charsetencodedecoder   exec_driver_sql)r
   r(   queryxidargcharsetr	   r	   r   	_xa_query`   s   zMySQLDialect_oursql._xa_queryc                 C   s   |  |d| d S )NzXA BEGIN %sr5   r
   r(   r2   r	   r	   r   do_begin_twophaser   s   z%MySQLDialect_oursql.do_begin_twophasec                 C   s    |  |d| |  |d| d S )N	XA END %szXA PREPARE %sr6   r7   r	   r	   r   do_prepare_twophaseu   s   z'MySQLDialect_oursql.do_prepare_twophaseFc                 C   s$   |s	|  |d| |  |d| d S )Nr9   zXA ROLLBACK %sr6   r
   r(   r2   is_preparedrecoverr	   r	   r   do_rollback_twophasey   s   z(MySQLDialect_oursql.do_rollback_twophasec                 C   s"   |s|  || | |d| d S )NzXA COMMIT %s)r:   r5   r;   r	   r	   r   do_commit_twophase   s   z&MySQLDialect_oursql.do_commit_twophasec                 C   s   t | | jdd||S NTr*   )r   	has_tableconnectr   )r
   r(   
table_nameschemar	   r	   r   rA      s   zMySQLDialect_oursql.has_tablec                 K   &   t j| | jdd|fd|i|S NTr*   rD   )r   get_table_optionsrB   r   r
   r(   rC   rD   kwr	   r	   r   rG         z%MySQLDialect_oursql.get_table_optionsc                 K   rE   rF   )r   get_columnsrB   r   rH   r	   r	   r   rK      rJ   zMySQLDialect_oursql.get_columnsc                 K   s$   t j| | jddfd|i|S rF   )r   get_view_namesrB   r   r
   r(   rD   rI   r	   r	   r   rL      s   z"MySQLDialect_oursql.get_view_namesc                 K   s   t | | jdd|S r@   )r   get_table_namesrB   r   rM   r	   r	   r   rN      s
   z#MySQLDialect_oursql.get_table_namesc                 K   s    t j| | jddfi |S r@   )r   get_schema_namesrB   r   )r
   r(   rI   r	   r	   r   rO      s   z$MySQLDialect_oursql.get_schema_namesc                 C   s   t | |jddS r@   )r   
initializer   r'   r	   r	   r   rP      s   zMySQLDialect_oursql.initializec                 C   s"   t | |jddjdd|||S )NT)close_with_resultr*   )r   _show_create_tablerB   r   )r
   r(   tabler4   	full_namer	   r	   r   rR      s   z&MySQLDialect_oursql._show_create_tablec                 C   s@   t || jjr|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
   er(   r!   r	   r	   r   is_disconnect   s   

z!MySQLDialect_oursql.is_disconnectc                 C   s
  |j dddd}||j t|dt t|dt t|dt t|dt t|d	t |d	d
r<d |d< nt|dt |	dd|d< t|dt |
dd i }dD ]}||v rz|| ||dd  < t||dd  t ||= q\|r||d< g |gS )Ndbuserpasswd)databaseusernamepasswordportcompressautopingraise_on_warningsdefault_charsetFr4   use_unicodeT
found_rows)ssl_cassl_keyssl_cert
ssl_capath
ssl_cipher   ssl)translate_connect_argsupdater1   r   coerce_kw_typeintboolpopstrr   
setdefault)r
   urloptsrp   keyr	   r	   r   create_connect_args   s2   
z'MySQLDialect_oursql.create_connect_argsc                 C   s   |j S N)rX   )r
   	exceptionr	   r	   r   _extract_error_code   s   z'MySQLDialect_oursql._extract_error_codec                 C   s   |j jS )z:Sniff out the character set in use for connection results.)r(   r4   r'   r	   r	   r   _detect_charset   s   z#MySQLDialect_oursql._detect_charsetc                 C      |  S z.oursql isn't super-broken like MySQLdb, yaaay.)fetchallr
   rpr4   r	   r	   r   _compat_fetchall     z$MySQLDialect_oursql._compat_fetchallc                 C   r   r   )fetchoner   r	   r	   r   _compat_fetchone	  r   z$MySQLDialect_oursql._compat_fetchonec                 C   r   r}   )firstr   r	   r	   r   _compat_first  s   z!MySQLDialect_oursql._compat_firstr}   )TF)NN)-r   r   r   driversupports_statement_cacher   r+   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%   r)   r5   r8   r:   r>   r?   rA   rG   rK   rL   rN   rO   rP   rR   r\   r|   r   r   r   r   r   r	   r	   r	   r   r   8   sP    

		


	

	
	


(

r   N)__doc__baser   r   r    r   r   r   r   r   r   r   r	   r	   r	   r   <module>   s    Z