
    ~h[3                         S r SSKrSSKJrJr  SSKJrJrJrJ	r	J
r
JrJrJrJrJr  SSSSS	S
.r\R"                  " S5      rS r " S S\R(                  5      rg)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)utf8mb4utf8mb3latin1koi8rkoi8uz^(\d+)c                 p    [         R                  U 5      nU(       a  [        UR                  S5      5      $ g)zReturns the leading numeric part of a string.

>>> numeric_part("20-alpha")
20
>>> numeric_part("foo")
>>> numeric_part("16b")
16
r   N)re_numeric_partmatchintgroup)sms     ND:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\MySQLdb/connections.pynumeric_partr!   #   s,     	a A1771:    c                      ^  \ rS rSrSr\R                  rU 4S jr  SS jr	S r
S rS rSS jrS	 rS
 rS rS rS rSU 4S jjrS rS r\r\r\r\r\r\r\r\r\r\rSr U =r!$ )
Connection3   z MySQL Database Connection Objectc                   > SSK JnJn  SSKJnJn  UR                  5       nSU;   a  UR                  S5      US'   SU;   a  UR                  S5      US'   SU;   a  US   nOUn0 n	UR                  5        H<  u  p[        U
[        5      (       a  [        U[        5      (       a	  US	S	 X'   M8  XU
'   M>     XS'   UR                  S
U R                  5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      U l        UR                  SS5      nUUR                  -  nUR                  SS5      nU(       a  UUR                   -  nUUS'   UR                  SS5      nU R"                  " U0 UD6  [$        TU ]L  " U0 UD6  Xl        UR                  5        V
Vs0 s H  u  p[+        U
5      [        Ld  M  X_M     snn
U l        [/        U R1                  5       R3                  S5      S	S  Vs/ s H  n[5        U5      PM     sn5      U l        SU l        U(       d  U R;                  5       nU R=                  X5        U(       a  U R?                  U5        U(       a  UR@                  URB                  URD                  URF                  URH                  URJ                  URL                  4 H  nX`RN                  U'   M     [P        U RN                  URR                  '   U RT                  URV                  -  U l,        U RX                  (       a  Ub  U R[                  U5        / U l.        g	s  snn
f s  snf )a  
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 str server_public_key_path:
    specify the path to a file RSA public key file for caching_sha2_password.
    See https://dev.mysql.com/doc/refman/9.0/en/caching-sha2-pluggable-authentication.html

: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dbdatabasepasswdpasswordconvNcursorclasscharset 	collationuse_unicodeTsql_modebinary_prefixFclient_flagmulti_statements
autocommit.   ascii)/MySQLdb.constantsr'   r(   MySQLdb.convertersr)   r*   copypopitems
isinstancer   listdefault_cursorget_binary_prefixMULTI_RESULTSMULTI_STATEMENTS_set_attributessuper__init__r0   typeencoderstupleget_server_infosplitr!   _server_versionencodingcharacter_set_nameset_character_setset_sql_modeSTRING
VAR_STRINGVARCHAR	TINY_BLOBMEDIUM_BLOB	LONG_BLOBBLOB	converterstrJSONserver_capabilitiesTRANSACTIONS_transactionalr9   messages)selfargskwargsr'   r(   r)   r*   kwargs2r/   conv2kvr0   r1   r3   r4   r5   r7   r8   r9   nt	__class__s                         r    rK   Connection.__init__8   s   N 	9A++-7?")++d"3GJw")++h"7GJV&>DDJJLDA!S!!jD&9&9Q4a	 !
  kk-1D1DE++i,KKR0	kk-6;;z2.%kk/5Ajj2v+++";;'94@6222K!, [[u5
d.g.$*'*& 


$Awc! AD$

  %&*&:&:&<&B&B3&G&KL&K\!_&KL 
  --/Gw2h'!!%%""$$&&$$ %2q! /2DNN:??+"669L9LL%
+I
 Ms   M,M$M%c                 T    U(       a	  U(       d  SnXl         X l        X@l        X@l        g)zset some attributes for otel	localhostN)hostuserr,   r+   )rd   rq   rr   r.   r,   portunix_socketrf   s           r    rI   Connection._set_attributes   s"     tD		 r"   c                     U $ N rd   s    r    	__enter__Connection.__enter__   s    r"   c                 $    U R                  5         g rw   )close)rd   exc_type	exc_value	tracebacks       r    __exit__Connection.__exit__  s    

r"   c                     [        U5      nU R                  5       U:w  a   [        R                  R	                  X5        g g rw   )boolget_autocommitr   
connectionr9   )rd   ons     r    r9   Connection.autocommit  s5    "X B&((2 'r"   c                 8    U=(       d    U R                   " U 5      $ )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.
)r0   )rd   r0   s     r    cursorConnection.cursor  s     /t///66r"   c                     [        U[        5      (       a  [        U5      n[        R                  R                  X5        g rw   )rB   	bytearraybytesr   r   query)rd   r   s     r    r   Connection.query  s,    eY''%LE,r"   c                     [        U[        [        45      (       d   eU R                  U5      nU R                  (       a  SU-   $ U$ )Ns   _binary)rB   r   r   string_literalrF   )rd   bsxs      r    _bytes_literalConnection._bytes_literal  sB    "ui01111#>!r"   c                 R    SSR                  [        U R                  U5      5      -  $ )Ns   (%s)   ,)joinmapliteral)rd   rl   s     r    _tuple_literalConnection._tuple_literal!  s!    $))Ca$89::r"   c                 @   [        U[        5      (       a+  U R                  UR                  U R                  5      5      nO[        U[
        5      (       a  U R                  U5      nO[        U[        5      (       a  U R                  U5      nOx[        U[        [        45      (       a  U R                  U5      nOKU R                  XR                  5      n[        U[        5      (       a  UR                  U R                  5      n[        U[        5      (       d   eU$ )zIf 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.
)rB   r^   r   encoderR   r   r   r   rN   rC   r   escaperM   )rd   or   s      r    r   Connection.literal$  s     a##AHHT]]$;<A9%%##A&A5!!##A&AE4=))##A&AA}}-A!S!!HHT]]+!U####r"   c                 &    U R                  S5        g)zYExplicitly begin a connection.

This method is not used when autocommit=False (default).
s   BEGINN)r   ry   s    r    beginConnection.begin;  s    
 	

8r"   c                    > [         TU ]  U5        [        R                  X5      U l        U(       a(  U R                  SU SU 35        U R                  5         gg)z,Set the connection character set to charset.z
SET NAMES z	 COLLATE N)rJ   rT   _charset_to_encodingrE   rR   r   store_result)rd   r1   r3   rm   s      r    rT   Connection.set_character_setB  sO    !'*,00BJJG9Ii[AB r"   c                     U R                   S:  a  [        S5      eU R                  SU-  5        U R                  5         g)zFSet the connection sql_mode. See MySQL documentation for
legal values.   r   z!server is too old to set sql_modezSET SESSION sql_mode='%s'N)rQ   r   r   r   )rd   r5   s     r    rU   Connection.set_sql_modeJ  s<     &(#$GHH

.9:r"   c                     U R                   S:  a  gU R                  S5        U R                  5       nUR                  S5      nU$ )zReturn 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.r   rx   zSHOW WARNINGSr   )rQ   r   r   	fetch_row)rd   rwarningss      r    show_warningsConnection.show_warningsR  sA    
 &(

?#;;q>r"   )rF   rQ   rb   r0   r,   r+   rM   rR   rq   rc   rr   )NNNr2   i  Nrw   )"__name__
__module____qualname____firstlineno____doc__r   CursorrD   rK   rI   rz   r   r9   r   r   r   r   r   r   rT   rU   r   r   r   r   r
   r	   r   r   r   r   r   __static_attributes____classcell__)rm   s   @r    r$   r$   3   s    *^^Nwr VZ$(3
7-;. 
 GE#N!MI'#N!M')r"   r$   )r   rer2   r   r   _exceptionsr   r   r   r	   r
   r   r   r   r   r   r   compiler   r!   r   r$   rx   r"   r    <module>r      sc    
      **Y' t*"" t*r"   