id8!dZddlZddlmZddlmZddlmZddlmZddlmZd d lm Z d d lm Z Gd d eZ GddeZ GddeZ GddeZeZdS)a .. dialect:: mysql+mysqldb :name: mysqlclient (maintained fork of MySQL-Python) :dbapi: mysqldb :connectstring: mysql+mysqldb://:@[:]/ :url: https://pypi.org/project/mysqlclient/ Driver Status ------------- The mysqlclient DBAPI is a maintained fork of the `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. 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@/?unix_socket=/cloudsql/: Server Side Cursors ------------------- The mysqldb dialect supports server-side cursors. See :ref:`mysql_ss_cursors`. N) MySQLCompiler) MySQLDialect)MySQLExecutionContext)MySQLIdentifierPreparer)TEXT)sql)utilc$eZdZedZdS)MySQLExecutionContext_mysqldbcHt|dr|jS|jjS)N _rowcount)hasattrrcursorrowcount)selfs V/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyrz&MySQLExecutionContext_mysqldb.rowcount>s' 4 % % (> !;' 'N)__name__ __module__ __qualname__propertyrrrr r =s- ((X(((rr ceZdZdS)MySQLCompiler_mysqldbNrrrrrrrrFDrrceZdZdS)MySQLIdentifierPreparer_mysqldbNrrrrr r Jrrr ceZdZdZdZdZdZdZdZe Z e Z e Zdfd ZdZejjdZedZfd Zd Zdd Zfd ZddZdZdZegdZfdZ xZ!S)MySQLDialect_mysqldbmysqldbTformatFc tt|jdi|||_|j4t |jdr||jjnd|_dS)N __version__rrrr) superr"__init__server_side_cursorsdbapir_parse_dbapi_versionr&_mysql_dbapi_version)rr*kwargs __class__s rr)zMySQLDialect_mysqldb.__init__[sv2"D))2<z.gs(KKAQ]Q]]]]KKrrr r')rematchtuplegroup)rversionms rr,z)MySQLDialect_mysqldb._parse_dbapi_versiondsN H0' : :  KKAq)9)9KKKKK K9rcx tdj}|j|_dS#tt f$rYdSwxYw)NzMySQLdb.cursorsTF) __import__cursorsSSCursor _sscursor ImportErrorAttributeError)rr@s rsupports_server_side_cursorsz1MySQLDialect_mysqldb.supports_server_side_cursorsksN  !233;G$-DN4^,   55 s $99c tdS)NMySQLdb)r?)clss rr+zMySQLDialect_mysqldb.dbapits)$$$rcbtt|fd}|S)Nc ||}|B|}|d|z|dSdS)Nz SET NAMES %s)character_set_namerexecuteclose)conn charset_namersuper_s r on_connectz3MySQLDialect_mysqldb.on_connect..on_connect{sj!t 2244L'~ <=== ('r)r(r"rQ)rrQrPr/s @rrQzMySQLDialect_mysqldb.on_connectxsA+T22==??     rc |ddS#|jj$r#}|||drYd}~dSd}~wwxYw)NFT)pingr+Error is_disconnect)rdbapi_connectionerrs rdo_pingzMySQLDialect_mysqldb.do_pingss   ! !% ( ( (4 z   !!#'7>> uuuuu  sA AAA NcH|||}| ||_dSdSr2) executemanyr)rr statement parameterscontextrs rdo_executemanyz#MySQLDialect_mysqldb.do_executemanys3%%i<<   (G     rc|jdkoK|d|jdd|jdd}|rJt jt jt jdtd d g}ng}tt| ||S) N)zshow collation where Charsetz = 'utf8mb4' and Collationz = 'utf8mb4_bin'z'test collated returns'utf8mb4)charset utf8mb4_bin) server_version_infoscalaridentifier_preparerquoter collatecastliteral_columnrr(r"_check_unicode_returns)r connectionhas_utf8mb4_binadditional_testsr/s rrmz+MySQLDialect_mysqldb._check_unicode_returnss 26   (..y9999(..{;;;;      " H*+DEEY///"     " )400GG (   rc|tddd}|jdi|}||jt j|dt t j|dtt j|dtt j|dtt j|d tt j|d tt j|d t t j|d ti}gd }|D]?}||vr9||||dd<t j||ddt||=@|r||d<| d d}|j U t|j j dzj j}||jz}n#t t"f$r d|_YnwxYw||d <g|gS)Ndbuserpasswd)databaseusernamepasswordcompressconnect_timeout read_timeout write_timeout client_flag local_infile use_unicoderd)ssl_cassl_keyssl_cert ssl_capath ssl_ciphersslrz.constants.CLIENTFr)dicttranslate_connect_argsupdatequeryr coerce_kw_typeboolr3strgetr+r?r constantsCLIENT FOUND_ROWSrDrCsupports_sane_rowcount) rurl_translate_argsoptsrkeyskeyr| CLIENT_FLAGSs rcreate_connect_argsz(MySQLDialect_mysqldb.create_connect_argss   ""O*s)<rsW((T ''''''))))))((((($9(((     M        &=   ~~~~~<~~~B r