o
    E6d                     @   s4   d Z ddlmZ ddlmZ G dd deZeZdS )a  

.. dialect:: mysql+pymysql
    :name: PyMySQL
    :dbapi: pymysql
    :connectstring: mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
    :url: https://pymysql.readthedocs.io/

Unicode
-------

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

.. _pymysql_ssl:

SSL Connections
------------------

The PyMySQL DBAPI accepts the same SSL arguments as that of MySQLdb,
described at :ref:`mysqldb_ssl`.   See that section for additional examples.

If the server uses an automatically-generated certificate that is self-signed
or does not match the host name (as seen from the client), it may also be
necessary to indicate ``ssl_check_hostname=false`` in PyMySQL::

    connection_uri = (
        "mysql+pymysql://scott:tiger@192.168.0.134/test"
        "?ssl_ca=/home/gord/client-ssl/ca.pem"
        "&ssl_cert=/home/gord/client-ssl/client-cert.pem"
        "&ssl_key=/home/gord/client-ssl/client-key.pem"
        "&ssl_check_hostname=false"
    )


MySQL-Python Compatibility
--------------------------

The pymysql DBAPI is a pure Python port of the MySQL-python (MySQLdb) driver,
and targets 100% compatibility.   Most behavioral notes for MySQL-python apply
to the pymysql driver as well.

   )MySQLDialect_mysqldb   )langhelpersc                       sX   e Zd ZdZdZdZejdd Ze	dd Z
d fdd		Z fd
dZdd Z  ZS )MySQLDialect_pymysqlpymysqlTNc              	   C   s2   zt dj}|j| _W dS  ttfy   Y dS w )Nzpymysql.cursorsTF)
__import__cursorsZSSCursorZ	_sscursorImportErrorAttributeError)selfr    r   xC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\sqlalchemy/dialects/mysql/pymysql.pysupports_server_side_cursors@   s   
z1MySQLDialect_pymysql.supports_server_side_cursorsc                 C   s   t dS )Nr   )r   )clsr   r   r   import_dbapiI   s   z!MySQLDialect_pymysql.import_dbapic                    s"   |d u r	t dd}t j||dS )Nuser)username)_translate_args)dictsupercreate_connect_args)r   urlr   	__class__r   r   r   M   s
   
z(MySQLDialect_pymysql.create_connect_argsc                    sB   t  |||r
dS t|| jjrt| }d|v pd|v S dS )NTzalready closedzconnection was killedF)r   is_disconnect
isinstanceZdbapiErrorstrlower)r   e
connectioncursorZstr_er   r   r   r   T   s   z"MySQLDialect_pymysql.is_disconnectc                 C   s$   t |jd tr|jd }|jd S )N    )r   args	Exception)r   	exceptionr   r   r   _extract_error_code_   s   

z(MySQLDialect_pymysql._extract_error_code)N)__name__
__module____qualname__ZdriverZsupports_statement_cacheZdescription_encodingr   Zmemoized_propertyr   classmethodr   r   r   r&   __classcell__r   r   r   r   r   :   s    

r   N)__doc__Zmysqldbr   utilr   r   dialectr   r   r   r   <module>   s
   	,+