a
    c	g                     @   s\   d 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	e	Z
dS )a  

.. dialect:: mysql+cymysql
    :name: CyMySQL
    :dbapi: cymysql
    :connectstring: mysql+cymysql://<username>:<password>@<host>/<dbname>[?<options>]
    :url: https://github.com/nakagami/CyMySQL

.. note::

    The CyMySQL dialect is **not tested as part of SQLAlchemy's continuous
    integration** and may have unresolved issues.  The recommended MySQL
    dialects are mysqlclient and PyMySQL.

   )BIT)MySQLDialect)MySQLDialect_mysqldb   )utilc                   @   s   e Zd Zdd ZdS )_cymysqlBITc                 C   s   dd }|S )z@Convert MySQL's 64 bit, variable length binary string to a long.c                 S   s.   | d ur*d}t | D ]}|d> |B }q|S | S )N       )iter)valuevi r   d/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/cymysql.pyprocess#   s    z-_cymysqlBIT.result_processor.<locals>.processr   )selfdialectZcoltyper   r   r   r   result_processor    s    z_cymysqlBIT.result_processorN)__name__
__module____qualname__r   r   r   r   r   r      s   r   c                   @   sZ   e Zd ZdZdZdZdZdZdZe	
ejeeiZedd Zdd Zd	d
 Zdd ZdS )MySQLDialect_cymysqlcymysqlTNFc                 C   s   t dS )Nr   )
__import__)clsr   r   r   import_dbapi9   s    z!MySQLDialect_cymysql.import_dbapic                 C   s   |j jS N)
connectioncharset)r   r   r   r   r   _detect_charset=   s    z$MySQLDialect_cymysql._detect_charsetc                 C   s   |j S r   )errno)r   	exceptionr   r   r   _extract_error_code@   s    z(MySQLDialect_cymysql._extract_error_codec                 C   s6   t || jjr| |dv S t || jjr.dS dS d S )N)i  i  i  i  i  TF)
isinstanceZdbapiZOperationalErrorr"   ZInterfaceError)r   er   cursorr   r   r   is_disconnectC   s
    z"MySQLDialect_cymysql.is_disconnect)r   r   r   ZdriverZsupports_statement_cacheZdescription_encodingZsupports_sane_rowcountZsupports_sane_multi_rowcountZsupports_unicode_statementsr   Zupdate_copyr   Zcolspecsr   r   classmethodr   r   r"   r&   r   r   r   r   r   .   s   
r   N)__doc__baser   r   Zmysqldbr    r   r   r   r   r   r   r   r   <module>	   s   &