U ó üe¡/ã@s„dZddlZddlmZmZddlmZmZmZm Z m Z m Z m Z m Z mZmZddddd d œZe d ¡Zd d „ZGdd„dejƒZdS)a This module implements connections for MySQLdb. Presently there is only one class: Connection. Others are unlikely. However, you might want to make your own subclasses. In most cases, you will probably override Connection.default_cursor with a non-standard Cursor class. éNé)ÚcursorsÚ_mysql) ÚWarningÚErrorÚInterfaceErrorÚ DataErrorÚ DatabaseErrorÚOperationalErrorÚIntegrityErrorÚ InternalErrorÚNotSupportedErrorÚProgrammingErrorÚutf8Úcp1252Úkoi8_rÚkoi8_u)Zutf8mb4Zutf8mb3Úlatin1Zkoi8rZkoi8uz^(\d+)cCs t |¡}|rt| d¡ƒSdS)zšReturns the leading numeric part of a string. >>> numeric_part("20-alpha") 20 >>> numeric_part("foo") >>> numeric_part("16b") 16 rN)Úre_numeric_partÚmatchÚintÚgroup)ÚsÚm©rúC/opt/hc_python/lib64/python3.8/site-packages/MySQLdb/connections.pyÚ numeric_part#s rcs¶eZdZdZejZ‡fdd„Zdd„Zdd„Z dd „Z dd d „Z d d„Z dd„Z dd„Zdd„Zdd„Zd‡fdd„ Zdd„Zdd„ZeZeZeZeZeZeZeZeZeZeZ‡ZS)Ú Connectionz MySQL Database Connection Objectcs>ddlm}m}ddlm}m}| ¡}d|kr>| d¡|d<d|krT| d¡|d<d|krf|d}n|}i} | ¡D]6\} } t | t ƒr¤t | t ƒr¤| d d …| | <qv| | | <qv| |d<| d |j ¡} |  d d ¡} | d d ¡}| dd¡}| dd ¡}| dd¡|_|  dd¡}||jO}| dd¡}|r4||jO}||d<| dd¡}tƒj||Ž| |_dd„| ¡Dƒ|_tdd„| ¡ d¡d d…Dƒƒ|_d|_| sª| ¡} | | |¡|rÆ| |¡|r |j|j|j|j |j!|j"|j#fD]}||j$|<qìt%|j$|j&<|j'|j(@|_)|j)r4|d k r4| *|¡g|_+d S)au Create a connection to the database. It is strongly recommended that you only use keyword parameters. Consult the MySQL C API documentation for more information. :param str host: host to connect :param str user: user to connect as :param str password: password to use :param str passwd: alias of password (deprecated) :param str database: database to use :param str db: alias of database (deprecated) :param int port: TCP/IP port to connect to :param str unix_socket: location of unix_socket to use :param dict conv: conversion dictionary, see MySQLdb.converters :param int connect_timeout: number of seconds to wait before the connection attempt fails. :param bool compress: if set, compression is enabled :param str named_pipe: if set, a named pipe is used to connect (Windows only) :param str init_command: command which is run once the connection is created :param str read_default_file: file from which default client values are read :param str read_default_group: configuration group to use from the default file :param type cursorclass: class object, used to create cursors (keyword only) :param bool use_unicode: If True, text-like columns are returned as unicode objects using the connection's character set. Otherwise, text-like columns are returned as bytes. Unicode objects will always be encoded to the connection's character set regardless of this setting. Default to True. :param str charset: If supplied, the connection character set will be changed to this character set. :param str collation: If ``charset`` and ``collation`` are both supplied, the character set and collation for the current connection will be set. If omitted, empty string, or None, the default collation for the ``charset`` is implied. :param str auth_plugin: If supplied, the connection default authentication plugin will be changed to this value. Example values: `mysql_native_password` or `caching_sha2_password` :param str sql_mode: If supplied, the session SQL mode will be changed to this setting. For more details and legal values, see the MySQL documentation. :param int client_flag: flags to use or 0 (see MySQL docs or constants/CLIENTS.py) :param bool multi_statements: If True, enable multi statements for clients >= 4.1. Defaults to True. :param str ssl_mode: specify the security settings for connection to the server; see the MySQL documentation for more details (mysql_option(), MYSQL_OPT_SSL_MODE). Only one of 'DISABLED', 'PREFERRED', 'REQUIRED', 'VERIFY_CA', 'VERIFY_IDENTITY' can be specified. :param dict ssl: dictionary or mapping contains SSL connection parameters; see the MySQL documentation for more details (mysql_ssl_set()). If this is set, and the client does not support SSL, NotSupportedError will be raised. Since mysqlclient 2.2.4, ssl=True is alias of ssl_mode=REQUIRED for better compatibility with PyMySQL and MariaDB. :param bool local_infile: enables LOAD LOCAL INFILE; zero disables :param bool autocommit: If False (default), autocommit is disabled. If True, autocommit is enabled. If None, autocommit isn't set and server default is used. :param bool binary_prefix: If set, the '_binary' prefix will be used for raw byte query arguments (e.g. Binary). This is disabled by default. There are a number of undocumented, non-standard methods. See the documentation for the MySQL C API for some hints on what they do. r)ÚCLIENTÚ FIELD_TYPE)Ú conversionsÚ _bytes_or_strÚdbZdatabaseÚpasswdÚpasswordÚconvNÚ cursorclassÚcharsetÚÚ collationÚ use_unicodeTÚsql_modeÚ binary_prefixFÚ client_flagÚmulti_statementsÚ autocommitcSs"i|]\}}t|ƒtk r||“qSr)Útyper)Ú.0ÚkÚvrrrÚ Ås þz'Connection.__init__..cSsg|] }t|ƒ‘qSr)r)r1ÚnrrrÚ Ìsz'Connection.__init__..Ú.éÚascii),ZMySQLdb.constantsrrZMySQLdb.convertersr r!ÚcopyÚpopÚitemsÚ isinstancerÚlistÚdefault_cursorÚgetÚ_binary_prefixZ MULTI_RESULTSZMULTI_STATEMENTSÚsuperÚ__init__r&ÚencodersÚtupleZget_server_infoÚsplitÚ_server_versionÚencodingZcharacter_set_nameÚset_character_setÚ set_sql_modeÚSTRINGZ VAR_STRINGZVARCHARZ TINY_BLOBZ MEDIUM_BLOBZ LONG_BLOBZBLOBÚ converterÚstrÚJSONZserver_capabilitiesZ TRANSACTIONSZ_transactionalr/Úmessages)ÚselfÚargsÚkwargsrrr r!Zkwargs2r%Zconv2r2r3r&r'r)r*r+r-r.r/Út©Ú __class__rrrC8svc           þÿ  ù    zConnection.__init__cCs|S©Nr©rPrrrÚ __enter__íszConnection.__enter__cCs | ¡dSrV)Úclose)rPÚexc_typeÚ exc_valueÚ tracebackrrrÚ__exit__ðszConnection.__exit__cCs&t|ƒ}| ¡|kr"tj ||¡dSrV)ÚboolZget_autocommitrÚ connectionr/)rPÚonrrrr/ós zConnection.autocommitNcCs|p|j|ƒS)zÒ Create a cursor on which queries may be performed. The optional cursorclass parameter is used to create the Cursor. By default, self.cursorclass=cursors.Cursor is used. )r&)rPr&rrrÚcursorøszConnection.cursorcCs$t|tƒrt|ƒ}tj ||¡dSrV)r=Ú bytearrayÚbytesrr_Úquery)rPrdrrrrds zConnection.querycCs.t|ttfƒst‚| |¡}|jr*d|S|S)Ns_binary)r=rcrbÚAssertionErrorÚstring_literalrA)rPÚbsÚxrrrÚ_bytes_literals  zConnection._bytes_literalcCsdd t|j|ƒ¡S)Ns(%s)ó,)ÚjoinÚmapÚliteral)rPrSrrrÚ_tuple_literalszConnection._tuple_literalcCsšt|tƒr| | |j¡¡}njt|tƒr4| |¡}nTt|tƒrJ| |¡}n>t|tt fƒrd|  |¡}n$|  ||j ¡}t|tƒrˆ| |j¡}t|tƒs–t ‚|S)aIf o is a single object, returns an SQL literal as a string. If o is a non-string sequence, the items of the sequence are converted and returned as a sequence. Non-standard. For internal use; do not use this in your applications. )r=rMrfÚencoderHrbrircrEr>rnÚescaperDre)rPÚorrrrrms        zConnection.literalcCs| d¡dS)ziExplicitly begin a connection. This method is not used when autocommit=False (default). sBEGINN)rdrWrrrÚbegin(szConnection.begincs@tƒ |¡t ||¡|_|r<| d|›d|›¡| ¡dS)z,Set the connection character set to charset.z SET NAMES z COLLATE N)rBrIÚ_charset_to_encodingr@rHrdÚ store_result)rPr'r)rTrrrI/s  zConnection.set_character_setcCs,|jdkrtdƒ‚| d|¡| ¡dS)zNSet the connection sql_mode. See MySQL documentation for legal values.©érz!server is too old to set sql_modezSET SESSION sql_mode='%s'N)rGr rdrt)rPr+rrrrJ7s zConnection.set_sql_modecCs.|jdkrdS| d¡| ¡}| d¡}|S)zæReturn detailed information about warnings as a sequence of tuples of (Level, Code, Message). This is only supported in MySQL-4.1 and up. If your server is an earlier version, an empty sequence is returned.rurz SHOW WARNINGSr)rGrdrtZ fetch_row)rPÚrÚwarningsrrrÚ show_warnings?s    zConnection.show_warnings)N)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rZCursorr?rCrXr]r/rardrirnrmrrrIrJryrrrr rr r r rr Ú __classcell__rrrTrr3s4 6  r)r}Úrer(rrÚ _exceptionsrrrrr r r r r rrsÚcompilerrr_rrrrrÚs0û