?????????? ????????? - ??????????????? - /home/agenciai/.local/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-39.pyc
???????
a ��Jh6% � @ s� d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ d d lm Z d dlm Z G dd � d e�ZG dd� de�ZG dd� de�Z e ZdS )a� .. dialect:: mysql+mysqldb :name: mysqlclient (maintained fork of MySQL-Python) :dbapi: mysqldb :connectstring: mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> :url: https://pypi.org/project/mysqlclient/ Driver Status ------------- The mysqlclient DBAPI is a maintained fork of the `MySQL-Python <https://sourceforge.net/projects/mysql-python>`_ DBAPI that is no longer maintained. `mysqlclient`_ supports Python 2 and Python 3 and is very stable. .. _mysqlclient: https://github.com/PyMySQL/mysqlclient-python .. _mysqldb_unicode: Unicode ------- Please see :ref:`mysql_unicode` for current recommendations on unicode handling. .. _mysqldb_ssl: SSL Connections ---------------- The mysqlclient and PyMySQL DBAPIs accept an additional dictionary under the key "ssl", which may be specified using the :paramref:`_sa.create_engine.connect_args` dictionary:: engine = create_engine( "mysql+mysqldb://scott:tiger@192.168.0.134/test", connect_args={ "ssl": { "ca": "/home/gord/client-ssl/ca.pem", "cert": "/home/gord/client-ssl/client-cert.pem", "key": "/home/gord/client-ssl/client-key.pem", } }, ) For convenience, the following keys may also be specified inline within the URL where they will be interpreted into the "ssl" dictionary automatically: "ssl_ca", "ssl_cert", "ssl_key", "ssl_capath", "ssl_cipher", "ssl_check_hostname". An example is as follows:: connection_uri = ( "mysql+mysqldb://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" ) .. seealso:: :ref:`pymysql_ssl` in the PyMySQL dialect Using MySQLdb with Google Cloud SQL ----------------------------------- Google Cloud SQL now recommends use of the MySQLdb dialect. Connect using a URL like the following: .. sourcecode:: text mysql+mysqldb://root@/<dbname>?unix_socket=/cloudsql/<projectid>:<instancename> Server Side Cursors ------------------- The mysqldb dialect supports server-side cursors. See :ref:`mysql_ss_cursors`. � N� )� MySQLCompiler)�MySQLDialect)�MySQLExecutionContext)�MySQLIdentifierPreparer)�TEXT� )�sql)�utilc @ s e Zd ZdS )�MySQLExecutionContext_mysqldbN��__name__� __module__�__qualname__� r r �V/home/agenciai/.local/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyr e s r c @ s e Zd ZdS )�MySQLCompiler_mysqldbNr r r r r r i s r c s� e Zd ZdZdZdZdZdZdZdZ e ZeZ eZ� fdd�Zdd� Zejjdd � �Zed d� �Z� fdd �Zdd� Zd!dd�Z� fdd�Zd"dd�Zdd� Zdd� Zdd� Zdd� Z � fdd �Z!� Z"S )#�MySQLDialect_mysqldbZmysqldbT�formatc s@ t � jf i |�� | jd ur6t| jd�r6| �| jj�nd| _d S )N�__version__�r r r )�super�__init__�dbapi�hasattr�_parse_dbapi_versionr Z_mysql_dbapi_version)�self�kwargs�� __class__r r r { s � ��zMySQLDialect_mysqldb.__init__c C s4 t �d|�}|r,tdd� |�ddd�D ��S dS d S )Nz(\d+)\.(\d+)(?:\.(\d+))?c s s | ]}|d urt |�V qd S �N)�int)�.0�xr r r � <genexpr>� � z<MySQLDialect_mysqldb._parse_dbapi_version.<locals>.<genexpr>r � r r )�re�match�tuple�group)r �version�mr r r r � s z)MySQLDialect_mysqldb._parse_dbapi_versionc C s6 zt d�j}|j| _W dS ttfy0 Y dS 0 d S )NzMySQLdb.cursorsTF)� __import__�cursorsZSSCursorZ _sscursor�ImportError�AttributeError)r r. r r r �supports_server_side_cursors� s z1MySQLDialect_mysqldb.supports_server_side_cursorsc C s t d�S )NZMySQLdb)r- )�clsr r r �import_dbapi� s z!MySQLDialect_mysqldb.import_dbapic s t � �� � � fdd�}|S )Nc sB � d ur� | � | � � }|d ur>| �� }|�d| � |�� d S )NzSET NAMES %s)�character_set_name�cursor�execute�close)�conn�charset_namer5 �Zsuper_r r � on_connect� s z3MySQLDialect_mysqldb.on_connect.<locals>.on_connect)r r; )r r; r r: r r; � s zMySQLDialect_mysqldb.on_connectc C s |� � dS )NT)Zping�r �dbapi_connectionr r r �do_ping� s zMySQLDialect_mysqldb.do_pingNc C s |� ||�}|d ur||_d S r )ZexecutemanyZ _rowcount)r r5 Z statement� parameters�contextZrowcountr r r �do_executemany� s z#MySQLDialect_mysqldb.do_executemanyc sn |� d| j�d�| j�d�f ��� }| jdko2|}|r\t�t�t�d�t dd��d�g}ng }t � �||�S ) Nz:show collation where %s = 'utf8mb4' and %s = 'utf8mb4_bin'�CharsetZ Collation)� z'test collated returns'Zutf8mb4)�charsetZutf8mb4_bin)Zexec_driver_sqlZidentifier_preparer�quoteZscalarZserver_version_infor Zcollate�castZliteral_columnr r �_check_unicode_returns)r � connectionZ collationZhas_utf8mb4_binZadditional_testsr r r rG � s&