3
öaß  ã               @   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   s4   | d k	r0d}xt j| ƒD ]}|d> |B }qW |S | S )Né    é   )r   Ú	iterbytes)ÚvalueÚvÚi© r   úG/tmp/pip-build-6_cqtusv/SQLAlchemy/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	j
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   Údbapi7   s    zMySQLDialect_cymysql.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 )N)Úerrno)r   Ú	exceptionr   r   r   Ú_extract_error_code>   s    z(MySQLDialect_cymysql._extract_error_codec             C   s6   t || jjƒr| j|ƒdkS t || jjƒr.dS dS d S )	NéÖ  éÝ  éÞ  éý  é  TF)r"   r#   r$   r%   r&   )Ú
isinstancer   ZOperationalErrorr!   ZInterfaceError)r   Úer   Úcursorr   r   r   Úis_disconnectA   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   &