U
    ÌZjK!  ã                   @   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ÚdialectZcoltyper	   r	   úc/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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d5dd„Zd6dd„Zd7dd„Zd8dd„Z d9dd„Z!d:dd„Z"dd „ Z#d!d"„ Z$d;d#d$„Z%d%d&„ Z&d'd(„ Z'd)d*„ Z(d+d,„ Z)d<d-d.„Z*d=d/d0„Z+d>d1d2„Z,dS )?ÚMySQLDialect_oursqlÚoursqlTc                 C   s   t jddd� tdƒS )NzƒThe 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   Zwarn_deprecatedÚ
__import__)Úclsr	   r	   r   ÚdbapiJ   s
    üzMySQLDialect_oursql.dbapiNc                 C   s*   |r|j r|j|dd� n| ||¡ dS )zMProvide an implementation of
        *cursor.execute(statement, parameters)*.T©r   N)r   Úexecute)r
   ÚcursorZ	statementÚ
parametersÚcontextr	   r	   r   Ú
do_executeT   s    
zMySQLDialect_oursql.do_executec                 C   s   |  ¡ jddd� d S )NZ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$   Z_escape_stringZ_connection_charsetÚencodeÚdecoder   Z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©r.   ©r
   r$   r+   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 %sr/   r0   r	   r	   r   Údo_prepare_twophaseu   s    z'MySQLDialect_oursql.do_prepare_twophaseFc                 C   s$   |s|   |d|¡ |   |d|¡ d S )Nr2   zXA ROLLBACK %sr/   ©r
   r$   r+   Zis_preparedZrecoverr	   r	   r   Údo_rollback_twophasey   s    z(MySQLDialect_oursql.do_rollback_twophasec                 C   s"   |s|   ||¡ |  |d|¡ d S )NzXA COMMIT %s)r3   r.   r4   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   r8   ‰   s    üzMySQLDialect_oursql.has_tablec                 K   s&   t j| | ¡ jdd�|fd|i|—ŽS ©NTr&   r;   )r   Úget_table_optionsr9   r   ©r
   r$   r:   r;   Úkwr	   r	   r   r=   ‘   s    ýüûz%MySQLDialect_oursql.get_table_optionsc                 K   s&   t j| | ¡ jdd�|fd|i|—ŽS r<   )r   Úget_columnsr9   r   r>   r	   r	   r   r@   š   s    ýüûzMySQLDialect_oursql.get_columnsc                 K   s$   t j| | ¡ jdd�fd|i|—ŽS r<   )r   Úget_view_namesr9   r   ©r
   r$   r;   r?   r	   r	   r   rA   £   s    þýüz"MySQLDialect_oursql.get_view_namesc                 K   s   t  | | ¡ jdd�|¡S r7   )r   Úget_table_namesr9   r   rB   r	   r	   r   rC   «   s
    ýz#MySQLDialect_oursql.get_table_namesc                 K   s   t j| | ¡ jdd�f|ŽS r7   )r   Úget_schema_namesr9   r   )r
   r$   r?   r	   r	   r   rD   ²   s    þýz$MySQLDialect_oursql.get_schema_namesc                 C   s   t  | |jdd�¡S r7   )r   Ú
initializer   r#   r	   r	   r   rE   ¹   s     
ÿzMySQLDialect_oursql.initializec                 C   s"   t  | |jdd�jdd�|||¡S )NT)Zclose_with_resultr&   )r   Ú_show_create_tabler9   r   )r
   r$   Útabler-   Z	full_namer	   r	   r   rF   ¾   s    ÿùz&MySQLDialect_oursql._show_create_tablec                 C   sD   t || jjƒr6|jd ko4d|jd ko4|jd  d¡S |jdkS d S )Nr   r   Úclosed)iÖ  iÝ  iÞ  iý  i  )Ú
isinstancer   Z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
¡rxd |d< nt |dt¡ | 	dd¡|d< t |dt¡ | 
dd¡ i }dD ]<}||kr¸|| ||dd … < t ||dd … t¡ ||= q¸|�r||d< g |gS )NÚdbÚuserÚpasswd)ZdatabaseÚusernameÚpasswordÚportÚcompressZautopingZraise_on_warningsZdefault_charsetFr-   Zuse_unicodeTZ
found_rows)Zssl_caZssl_keyZssl_certZ
ssl_capathZ
ssl_cipheré   Ússl)Ztranslate_connect_argsÚupdater*   r   Zcoerce_kw_typeÚintÚboolÚpopÚstrr   Ú
setdefault)r
   ÚurlÚoptsrW   Úkeyr	   r	   r   Úcreate_connect_argsÕ   s4      ÿ
z'MySQLDialect_oursql.create_connect_argsc                 C   s   |j S ©N)rJ   )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$   r-   r#   r	   r	   r   Ú_detect_charset   s    z#MySQLDialect_oursql._detect_charsetc                 C   s   |  ¡ S ©z.oursql isn't super-broken like MySQLdb, yaaay.)Zfetchall©r
   Úrpr-   r	   r	   r   Ú_compat_fetchall  s    z$MySQLDialect_oursql._compat_fetchallc                 C   s   |  ¡ S rf   )Zfetchonerg   r	   r	   r   Ú_compat_fetchone	  s    z$MySQLDialect_oursql._compat_fetchonec                 C   s   |  ¡ S rb   )Úfirstrg   r	   r	   r   Ú_compat_first  s    z!MySQLDialect_oursql._compat_first)N)TF)TF)N)N)N)N)N)NN)N)N)N)-r   r   r   ZdriverZsupports_statement_cacher   r'   Zsupports_unicode_bindsZsupports_unicode_statementsZsupports_native_decimalZsupports_sane_rowcountZsupports_sane_multi_rowcountr   Zexecution_ctx_clsZupdate_copyr   ZcolspecsÚsqltypesZTimer   r   Úclassmethodr   r"   r%   r.   r1   r3   r5   r6   r8   r=   r@   rA   rC   rD   rE   rF   rN   ra   rd   re   ri   rj   rl   r	   r	   r	   r   r   8   sV    ÿ
	
	   ÿ
   ÿ
	

	
	

   ÿ

(

r   N)Ú__doc__Úbaser   r   r   Ú r   rm   r   r   r   r   r   r	   r	   r	   r   Ú<module>   s    Z