HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyc
�
���ec@s�dZddlZddlmZddlmZddlmZddlmZddlmZd	d
lm	Z	d	dlm
Z
defd
��YZdefd��YZdefd��YZ
e
ZdS(s�

.. 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::

    mysql+mysqldb://root@/<dbname>?unix_socket=/cloudsql/<projectid>:<instancename>

Server Side Cursors
-------------------

The mysqldb dialect supports server-side cursors. See :ref:`mysql_ss_cursors`.

i����Ni(t
MySQLCompiler(tMySQLDialect(tMySQLExecutionContext(tMySQLIdentifierPreparer(tTEXTi(tsql(tutiltMySQLExecutionContext_mysqldbcBseZed��ZRS(cCs$t|d�r|jS|jjSdS(Nt	_rowcount(thasattrRtcursortrowcount(tself((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRbs(t__name__t
__module__tpropertyR(((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRastMySQLCompiler_mysqldbcBseZRS((R
R(((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRjstMySQLDialect_mysqldbcBs�eZdZeZeZeZeZeZdZ	e
ZeZ
eZd�Zd�Zejjd��Zed��Zd�Zd�Zd�Zdd	�Zd
�Zdd�Zd�Zd
�Z d�Z!e"dddddg�Z#d�Z$RS(tmysqldbtformatcKsYtt|�j|�|jdk	rLt|jd�rL|j|jj�nd|_dS(Nt__version__i(iii(	tsuperRt__init__tdbapitNoneR	t_parse_dbapi_versionRt_mysql_dbapi_version(Rtkwargs((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR|s6cCsCtjd|�}|r;td�|jddd�D��SdSdS(Ns(\d+)\.(\d+)(?:\.(\d+))?css'|]}|dk	rt|�VqdS(N(Rtint(t.0tx((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pys	<genexpr>�siiii(iii(tretmatchttupletgroup(Rtversiontm((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR�s#cCsBy#td�j}|j|_tSWnttfk
r=tSXdS(NsMySQLdb.cursors(t
__import__tcursorstSSCursort	_sscursortTruetImportErrortAttributeErrortFalse(RR&((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pytsupports_server_side_cursors�scCs
td�S(NtMySQLdb(R%(tcls((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR�scs(tt|�j���fd�}|S(Ncs_�dk	r�|�n|j�}|dk	r[|j�}|jd|�|j�ndS(NsSET NAMES %s(Rtcharacter_set_nameR
texecutetclose(tconntcharset_nameR
(tsuper_(sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyt
on_connect�s
(RRR6(RR6((R5sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR6�scCs
|j�S(N(tping(Rtdbapi_connection((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyt
_ping_impl�scCsQy|j|�Wn5|jjk
rH}|j||d�rBtS�nXtSdS(N(R9RtErrort
is_disconnectRR,R)(RR8terr((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pytdo_ping�scCs.|j||�}|dk	r*||_ndS(N(texecutemanyRR(RR
t	statementt
parameterstcontextR((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pytdo_executemany�scCs�|jd|jjd�|jjd�f�j�}|jd	koI|}|r�tjtjtjd�t	dd��d�g}ng}t
t|�j||�S(
Ns:show collation where %s = 'utf8mb4' and %s = 'utf8mb4_bin'tCharsett	Collationis'test collated returns'tcharsettutf8mb4tutf8mb4_bin(i(
texec_driver_sqltidentifier_preparertquotetscalartserver_version_infoRtcollatetcasttliteral_columnRRRt_check_unicode_returns(Rt
connectiont	collationthas_utf8mb4_bintadditional_tests((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRP�sc
Cs�|dkr*tdddddd�}n|j|�}|j|j�tj|dt�tj|dt�tj|d	t�tj|d
t�tj|dt�tj|dt�tj|d
t�tj|dt	�i}dt	fdt	fdt	fdt	fdt	fdtfg}xS|D]K\}}||kr*||||d<tj||d|�||=q*q*W|r�||d<n|j
dd�}|j�}	|	dk	r�||	O}||d<ng|gS(Ntdatabasetdbtusernametusertpasswordtpasswdtcompresstconnect_timeouttread_timeoutt
write_timeouttclient_flagtlocal_infiletuse_unicodeREtssl_catssl_keytssl_certt
ssl_capatht
ssl_ciphertssl_check_hostnameitssli(Rtdictttranslate_connect_argstupdatetqueryRtcoerce_kw_typetboolRtstrtgett_found_rows_client_flag(
Rturlt_translate_argstoptsRhtkeystkeytkw_typeR_tclient_flag_found_rows((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pytcreate_connect_args�sB					


cCs\|jdk	rTy t|jjd�jj}Wnttfk
rIdSX|jSndSdS(Ns.constants.CLIENT(	RRR%R
t	constantstCLIENTR+R*t
FOUND_ROWS(RtCLIENT_FLAGS((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRqs
cCs|jdS(Ni(targs(Rt	exception((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyt_extract_error_codescCs=y|jj}Wntk
r1tjd�dSX|�SdS(s:Sniff out the character set in use for connection results.s�No 'character_set_name' can be detected with this MySQL-Python version; please upgrade to a recent version of MySQL-Python.  Assuming latin1.tlatin1N(RQR0R+Rtwarn(RRQt	cset_name((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyt_detect_charsets
tSERIALIZABLEsREAD UNCOMMITTEDsREAD COMMITTEDsREPEATABLE READt
AUTOCOMMITcCsF|dkr|jt�n&|jt�tt|�j||�dS(NR�(t
autocommitR)R,RRt_set_isolation_level(RRQtlevel((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR�7s

N(%R
RtdriverR)tsupports_statement_cachetsupports_unicode_statementstsupports_sane_rowcounttsupports_sane_multi_rowcounttsupports_native_decimaltdefault_paramstyleRtexecution_ctx_clsRtstatement_compilerRtpreparerRRRtlanghelperstmemoized_propertyR-tclassmethodRR6R9R=RRBRPRyRqR�R�tsett_isolation_lookupR�(((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRns<							3	
		(t__doc__RtbaseRRRRRtRRRRRtdialect(((sR/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyt<module>Ts	�