1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
U
·ý°d    Éã    @sžddlZddlZddlZddlZddlZddlZddlZddlmZddl    m
Z
m Z ddl m Z mZmZmZmZmZddlmZddlmZddlmZdd    lmZmZmZmZmZmZdd
lmZm Z zddl!Z!d Z"Wne#k
rôdZ!d Z"YnXzddl$Z$e$ %¡Z&[$Wne#e'fk
r*dZ&YnXd Z(ej)ej*ej+ej,ej-ej.ej/ej0ej1h    Z2d Z3dZ4dd„Z5dd„Z6Gdd„dƒZ7Gdd„dƒZ8Gdd„dƒZ9dS)éNé)Ú_auth)Úcharset_by_nameÚ charset_by_id)ÚCLIENTÚCOMMANDÚCRÚERÚ
FIELD_TYPEÚ SERVER_STATUS)Ú
converters)ÚCursor)ÚParser)Ú dump_packetÚ MysqlPacketÚFieldDescriptorPacketÚOKPacketWrapperÚEOFPacketWrapperÚLoadLocalPacketWrapper)ÚerrÚVERSION_STRINGTFZutf8mb4éÿÿÿcCst d|¡dd…S)Nú<Ié)ÚstructÚpack)Ún©rúJd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pymysql/connections.pyÚ _pack_int24CsrcCsŒ|dkrtd|ƒ‚nr|dkr(t|gƒS|dkr@dt d|¡S|dkr`dt d    |¡dd
…S|d krxd t d |¡Std|d fƒ‚dS)NrzFEncoding %d is less than 0 - no representation in LengthEncodedIntegeréûióüú<Héóýrrlóþz<QzIEncoding %x is larger than %x - no representation in LengthEncodedInteger)Ú
ValueErrorÚbytesrr)ÚirrrÚ _lenenc_intHs"ÿ
ÿÿr)c'@s&eZdZdZdZdZdZdZddddddddddddedddddddddddddddddddddddddd    œ&d
d „Z    d d „Z
dd„Z dd„Z dd„Z edd„ƒZdd„ZeZdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zdbd*d+„Zd,d-„Zd.d/„Zd0d1„Zdcd2d3„Zddd4d5„Z ded6d7„Z!d8d9„Z"d:d;„Z#dfd<d=„Z$d>d?„Z%dgd@dA„Z&dBdC„Z'e(fdDdE„Z)dFdG„Z*dHdI„Z+dhdJdK„Z,dLdM„Z-dNdO„Z.dPdQ„Z/dRdS„Z0dTdU„Z1dVdW„Z2dXdY„Z3dZd[„Z4d\d]„Z5d^d_„Z6d`da„Z7e8j9Z9e8j:Z:e8j;Z;e8j<Z<e8j=Z=e8j>Z>e8j?Z?e8j@Z@e8jAZAe8jBZBdS)iÚ
ConnectionaI
    Representation of a socket with a mysql server.
 
    The proper way to get an instance of this class is to call
    connect().
 
    Establish a connection to the MySQL database. Accepts several
    arguments:
 
    :param host: Host where the database server is located.
    :param user: Username to log in as.
    :param password: Password to use.
    :param database: Database to use, None to not use a particular one.
    :param port: MySQL port to use, default is usually OK. (default: 3306)
    :param bind_address: When the client has multiple network interfaces, specify
        the interface from which to connect to the host. Argument can be
        a hostname or an IP address.
    :param unix_socket: Use a unix socket rather than TCP/IP.
    :param read_timeout: The timeout for reading from the connection in seconds (default: None - no timeout)
    :param write_timeout: The timeout for writing to the connection in seconds (default: None - no timeout)
    :param charset: Charset to use.
    :param sql_mode: Default SQL_MODE to use.
    :param read_default_file:
        Specifies  my.cnf file to read these parameters from under the [client] section.
    :param conv:
        Conversion dictionary to use instead of the default one.
        This is used to provide custom marshalling and unmarshalling of types.
        See converters.
    :param use_unicode:
        Whether or not to default to unicode strings.
        This option defaults to true.
    :param client_flag: Custom flags to send to MySQL. Find potential values in constants.CLIENT.
    :param cursorclass: Custom cursor class to use.
    :param init_command: Initial SQL statement to run when connection is established.
    :param connect_timeout: The timeout for connecting to the database in seconds.
        (default: 10, min: 1, max: 31536000)
    :param ssl: A dict of arguments similar to mysql_ssl_set()'s parameters or an ssl.SSLContext.
    :param ssl_ca: Path to the file that contains a PEM-formatted CA certificate.
    :param ssl_cert: Path to the file that contains a PEM-formatted client certificate.
    :param ssl_disabled: A boolean value that disables usage of TLS.
    :param ssl_key: Path to the file that contains a PEM-formatted private key for the client certificate.
    :param ssl_verify_cert: Set to true to check the server certificate's validity.
    :param ssl_verify_identity: Set to true to check the server's identity.
    :param read_default_group: Group to read from in the configuration file.
    :param autocommit: Autocommit mode. None means use server default. (default: False)
    :param local_infile: Boolean to enable the use of LOAD DATA LOCAL command. (default: False)
    :param max_allowed_packet: Max size of packet sent to server in bytes. (default: 16MB)
        Only used to limit size of "LOAD LOCAL INFILE" data packet smaller than default (16KB).
    :param defer_connect: Don't explicitly connect on construction - wait for connect call.
        (default: False)
    :param auth_plugin_map: A dict of plugin names to a class that processes that plugin.
        The class will take the Connection object as the argument to the constructor.
        The class needs an authenticate method taking an authentication packet as
        an argument.  For the dialog plugin, a prompt(echo, prompt) method can be used
        (if no authenticate method) for returning a string from the user. (experimental)
    :param server_public_key: SHA256 authentication plugin public key value. (default: None)
    :param binary_prefix: Add _binary prefix on bytes and bytearray. (default: False)
    :param compress: Not supported.
    :param named_pipe: Not supported.
    :param db: **DEPRECATED** Alias for database.
    :param passwd: **DEPRECATED** Alias for password.
 
    See `Connection <https://www.python.org/dev/peps/pep-0249/#connection-objects>`_ in the
    specification.
    NÚFrTé
r#)&ÚuserÚpasswordÚhostÚdatabaseÚ unix_socketÚportÚcharsetÚsql_modeÚread_default_fileÚconvÚ use_unicodeÚ client_flagÚ cursorclassÚ init_commandÚconnect_timeoutÚread_default_groupÚ
autocommitÚ local_infileÚmax_allowed_packetÚ defer_connectÚauth_plugin_mapÚ read_timeoutÚ write_timeoutÚ bind_addressÚ binary_prefixÚ program_nameÚserver_public_keyÚsslÚssl_caÚssl_certÚ ssl_disabledÚssl_keyÚssl_verify_certÚssl_verify_identityÚcompressÚ
named_pipeÚpasswdÚdbc&*s¼|&dk    r|dkr|&}|%dk    r$|s$|%}|#s,|$r4tdƒ‚t|ƒ|_|jrN| tjO} ˆrl|    sltj d¡rhd}    nd}    |    r6ˆszd‰tƒ‰ˆ     t
j   |    ¡¡‡‡fdd„}'|'d|ƒ}|'d    |ƒ}|'d
|ƒ}|'d |ƒ}|'d |ƒ}t |'d |ƒƒ}|'d|ƒ}|'d|ƒ}|süi}t|tƒr6dD](}(|'d|(| |(¡ƒ})|)r |)||(<q d|_|sÒ|s`|s`| s`|!s`|"r¢|t|"ƒ|!dk    rv|!nddœ}|dk    r||d<| dk    r¢| |d<|rÒts¶tdƒ‚d|_| tjO} | |¡|_|pÚd|_|pæd|_t|jƒt k    rtdƒ‚|p
t|_|pd|_t|jtƒr6|j d¡|_||_||_ ||_!d|kr`dksjntdƒ‚|prd|_"|dk    r’|dkr’td ƒ‚||_#|dk    r´|dkr´td!ƒ‚||_$|pÂt%|_&| |_'t(|j&ƒj)|_)| tj*O} |jrö| tj+O} | |_,| |_-d|_.d|_/d"|_0||_1|
dkr*t2j3}
d#d$„|
 4¡Dƒ|_5d%d$„|
 4¡Dƒ|_6||_7||_8||_9|pli|_:||_;||_<d&tt
 =¡ƒt>d'œ|_?|r¢||j?d(<|r°d|_@n| A¡dS))Nz3compress and named_pipe arguments are not supportedÚwinz    c:\my.iniz /etc/my.cnfÚclientcs4|r|Szˆ ˆ|¡WStk
r.|YSXdS©N)ÚgetÚ    Exception)ÚkeyÚarg©Úcfgr<rrÚ_configñs z$Connection.__init__.<locals>._configr-r.r/r0Úsocketr2z bind-addresszdefault-character-set)ÚcaÚcapathÚcertrXÚcipherzssl-F)r^Úcheck_hostnameÚ verify_moder`rXzssl module not foundTÚ    localhostiê zport should be of type intóÚlatin1ri€3áz+connect_timeout should be >0 and <=31536000zread_timeout should be > 0zwrite_timeout should be > 0z Not connectedcSs"i|]\}}t|ƒtk    r||“qSr©ÚtypeÚint©Ú.0ÚkÚvrrrÚ
<dictcomp>Ks z'Connection.__init__.<locals>.<dictcomp>cSs"i|]\}}t|ƒtkr||“qSrrgrjrrrrnLs Zpymysql)Z _client_nameZ_pidZ_client_versionrF)BÚNotImplementedErrorÚboolÚ _local_infilerZ LOCAL_FILESÚsysÚplatformÚ
startswithrÚreadÚosÚpathÚ
expanduserriÚ
isinstanceÚdictrVrHÚ SSL_ENABLEDÚSSLÚ_create_ssl_ctxÚctxr/r2rhr&Ú DEFAULT_USERr-r.ÚstrÚencoderRr1rDr;Ú _read_timeoutÚ_write_timeoutÚDEFAULT_CHARSETr3r7rÚencodingZ CAPABILITIESÚCONNECT_WITH_DBr8r9Ú_resultÚ_affected_rowsÚ    host_infoÚautocommit_moder Z conversionsÚitemsÚencodersÚdecodersr4r:r?Ú_auth_plugin_mapÚ_binary_prefixrGÚgetpidrÚ_connect_attrsÚ_sockÚconnect)*Úselfr-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRr\rXÚvaluerrZrÚ__init__¤sÔ* ÿ
 
 
 
 
 
 
 
 
  ÿû
 
 
 
 
 
 
ý
zConnection.__init__cCs|SrUr©r”rrrÚ    __enter__bszConnection.__enter__cGs~| ¡dSrU)Úclose)r”Úexc_inforrrÚ__exit__eszConnection.__exit__cCsRt|tjƒr|S| d¡}| d¡}|dko2|dk}tj||d}| oR| dd¡|_| d¡}|dkr||rrtjntj|_nxt|t    ƒrš|rtjntj|_nZt|t
ƒr¬|  ¡}|dkr¾tj|_n6|dkrÐtj |_n$|d    krâtj|_n|rìtjntj|_d
|kr|j |d
| d ¡d d |kr.| |d ¡|jtjO_|jtjO_|S)Nr^r_)Úcafiler_rbTrc)ÚnoneÚ0ÚfalseÚnoÚoptional)ÚrequiredÚ1ÚtrueÚyesr`rX)Úkeyfilera)ryrHÚ
SSLContextrVÚcreate_default_contextrbÚ    CERT_NONEÚ CERT_REQUIREDrcrpr€ÚlowerÚ CERT_OPTIONALÚload_cert_chainÚ set_ciphersÚoptionsÚ OP_NO_SSLv2Ú OP_NO_SSLv3)r”Zsslpr^r_Zhasnocar~Zverify_mode_valuerrrr}is8 
 
 
 
 
 
 
 
 
 
zConnection._create_ssl_ctxcCsl|jrt d¡‚d|_|jdkr$dSt ddtj¡}z(z|     |¡Wnt
k
rXYnXW5| ¡XdS)z÷
        Send the quit message and close the socket.
 
        See `Connection.close() <https://www.python.org/dev/peps/pep-0249/#Connection.close>`_
        in the specification.
 
        :raise Error: If the connection is already closed.
        úAlready closedTNú<iBr) Ú_closedrÚErrorr’rrrZCOM_QUITÚ _force_closeÚ _write_bytesrW)r”Ú    send_datarrrr™‰s    
 
 
zConnection.closecCs
|jdk    S)z&Return True if the connection is open.N)r’r—rrrÚopenŸszConnection.opencCs2|jr"z|j ¡Wn YnXd|_d|_dS)z&Close connection without QUIT message.N)r’r™Ú_rfiler—rrrr¶¤szConnection._force_closecCs&t|ƒ|_| ¡}||kr"| ¡dSrU)rprŠÚget_autocommitÚ_send_autocommit_mode)r”r•Úcurrentrrrr=°s
zConnection.autocommitcCst|jtj@ƒSrU)rpÚ server_statusr ZSERVER_STATUS_AUTOCOMMITr—rrrr»¶szConnection.get_autocommitcCs2| ¡}| ¡st tjd¡‚t|ƒ}|j|_|S)NzCommand Out of Sync)Ú _read_packetÚ is_ok_packetrÚOperationalErrorrÚCR_COMMANDS_OUT_OF_SYNCrr¾)r”ÚpktÚokrrrÚ_read_ok_packet¹sþzConnection._read_ok_packetcCs&| tjd| |j¡¡| ¡dS)z3Set whether or not to commit after every execute().zSET AUTOCOMMIT = %sN)Ú_execute_commandrÚ    COM_QUERYÚescaperŠrÅr—rrrr¼Äs
ÿz Connection._send_autocommit_modecCs| tjd¡| ¡dS)zBegin transaction.ZBEGINN©rÆrrÇrÅr—rrrÚbeginËszConnection.begincCs| tjd¡| ¡dS)z¨
        Commit changes to stable storage.
 
        See `Connection.commit() <https://www.python.org/dev/peps/pep-0249/#commit>`_
        in the specification.
        ZCOMMITNrÉr—rrrÚcommitÐszConnection.commitcCs| tjd¡| ¡dS)z­
        Roll back the current transaction.
 
        See `Connection.rollback() <https://www.python.org/dev/peps/pep-0249/#rollback>`_
        in the specification.
        ZROLLBACKNrÉr—rrrÚrollbackÚszConnection.rollbackcCs$| tjd¡t|ƒ}| ¡|jS)z%Send the "SHOW WARNINGS" SQL command.z SHOW WARNINGS)rÆrrÇÚ MySQLResultruÚrows)r”ÚresultrrrÚ show_warningsäszConnection.show_warningscCs| tj|¡| ¡dS)zI
        Set current db.
 
        :param db: The name of the db.
        N)rÆrZ COM_INIT_DBrÅ)r”rRrrrÚ    select_dbëszConnection.select_dbcCsXt|tƒrd| |¡dSt|ttfƒrF| |¡}|jrBd|}|Stj||j    |dS)zxEscape whatever value is passed.
 
        Non-standard, for internal use; do not use this in your applications.
        ú'Ú_binary)Úmapping)
ryr€Ú escape_stringr'Ú    bytearrayÚ _quote_bytesrr Z escape_itemr3)r”ÚobjrÔÚretrrrrÈôs
 
zConnection.escapecCs| ||j¡S)zkAlias for escape().
 
        Non-standard, for internal use; do not use this in your applications.
        )rÈrŒ)r”rØrrrÚliteralszConnection.literalcCs"|jtj@r| dd¡St |¡S)NrÒz'')r¾r Ú"SERVER_STATUS_NO_BACKSLASH_ESCAPESÚreplacer rÕ©r”ÚsrrrrÕ    s  zConnection.escape_stringcCs0|jtj@r&d| dd¡ dd¡fSt |¡S)Nz'%s'ó's''ÚasciiÚsurrogateescape)r¾r rÛrÜÚdecoder Z escape_bytesrÝrrrr×s zConnection._quote_bytescCs|r ||ƒS| |¡S)a
        Create a new cursor to execute queries with.
 
        :param cursor: The type of cursor to create. None means use Cursor.
        :type cursor: :py:class:`Cursor`, :py:class:`SSCursor`, :py:class:`DictCursor`, or :py:class:`SSDictCursor`.
        )r9)r”ÚcursorrrrrãszConnection.cursorcCs:t|tƒr| |jd¡}| tj|¡|j|d|_|jS)Nrá©Ú
unbuffered)    ryr€rr…rÆrrÇÚ_read_query_resultrˆ)r”ÚsqlrårrrÚquerys
 
zConnection.querycCs|j|d|_|jS)Nrä)rærˆ)r”rårrrÚ next_result(szConnection.next_resultcCs|jSrU)rˆr—rrrÚ affected_rows,szConnection.affected_rowscCs"t d|¡}| tj|¡| ¡S)Nr)rrrÆrZCOM_PROCESS_KILLrÅ)r”Ú    thread_idrYrrrÚkill/s zConnection.killcCst|jdkr&|r| ¡d}n
t d¡‚z| tjd¡| ¡Wn.tk
rn|rh| ¡|     d¡n‚YnXdS)zÛ
        Check if the server is alive.
 
        :param reconnect: If the connection is closed, reconnect.
        :type reconnect: boolean
 
        :raise Error: If the connection is closed and reconnect=False.
        NFr²r+)
r’r“rrµrÆrZCOM_PINGrÅrWÚping)r”Z    reconnectrrrrí4s    
 
  zConnection.pingcCs:t|ƒj}| tjd| |¡¡| ¡||_||_dS)Nz SET NAMES %s)rr…rÆrrÇrÈr¿r3)r”r3r…rrrÚ set_charsetMs
 
zConnection.set_charsetc
Cs^d|_z´|dkr&|jr\t tjtj¡}| |j¡| |j¡d|_d|_    t
rZt dƒnÀi}|j dk    rx|j df|d<z"tj |j|jf|jf|Ž}WqÚWqxttfk
rÖ}z|jtjkrÄWY¢qx‚W5d}~XYqxXqxd|j|jf|_t
røt dƒ| tjtjd    ¡| tjtjd    ¡| d¡||_| d
¡|_d|_| ¡| ¡|jdk    rr|  ¡}| !d |jf¡|j"dk    r¢|  ¡}| !|j"¡| #¡| $¡|j%dk    rº| &|j%¡Wnœt'k
rX}z|d|_|dk    rúz | #¡Wn YnXt(|ttfƒrFt) *t+j,d |j|f¡}||_-t. /¡|_.t
rBt |j.ƒ|‚‚W5d}~XYnXdS) NFzLocalhost via UNIX socketTzconnected using unix_socketrÚsource_addressz socket %s:%dzconnected using socketrÚrbzSET sql_mode=%sz(Can't connect to MySQL server on %r (%s))0r´r1r]ÚAF_UNIXÚ SOCK_STREAMÚ
settimeoutr;r“r‰Ú_secureÚDEBUGÚprintrDÚcreate_connectionr/r2ÚOSErrorÚIOErrorÚerrnoÚEINTRÚ
setsockoptÚ IPPROTO_TCPÚ TCP_NODELAYÚ
SOL_SOCKETÚ SO_KEEPALIVEr’ÚmakefilerºÚ _next_seq_idÚ_get_server_informationÚ_request_authenticationr4rãÚexecuter:r™rËrŠr=Ú BaseExceptionryrrÁrZCR_CONN_HOST_ERRORZoriginal_exceptionÚ    tracebackÚ
format_exc)r”ÚsockÚkwargsÚeÚcÚexcrrrr“Vs‚
 
 
 
ÿÿ 
 
  þ
 
zConnection.connectcCsFtt|ƒƒt|jgƒ|}tr(t|ƒ| |¡|jdd|_dS)zvWrites an entire "mysql packet" in its entirety to the network
        adding its length and sequence number.
        réN)rÚlenr'rrõrr·)r”ÚpayloadÚdatarrrÚ write_packet£s
 
zConnection.write_packetc
Csðtƒ}| d¡}t d|¡\}}}||d>}||jkrj| ¡|dkrVt tj    d¡‚t 
d||jf¡‚|jdd|_| |¡}t rt |ƒ||7}|d    kr¢q|t krq®q|t|ƒ|jƒ}    |     ¡rì|jd
k    rä|jjd kräd |j_|     ¡|    S) a!Read an entire "mysql packet" in its entirety from the network
        and return a MysqlPacket type that represents the results.
 
        :raise OperationalError: If the connection to the MySQL server is lost.
        :raise InternalError: If the packet sequence number is wrong.
        éz<HBBérú,Lost connection to MySQL server during queryz1Packet sequence number wrong - got %d expected %drrrNTF)rÖÚ _read_bytesrÚunpackrr¶rrÁrÚCR_SERVER_LOSTÚ InternalErrorrõrÚMAX_PACKET_LENr'r…Zis_error_packetr‡Úunbuffered_activeZraise_for_error)
r”Z packet_typeZbuffZ packet_headerZbtrlZbtrhZ packet_numberZ bytes_to_readZ    recv_dataÚpacketrrrr¿¯s>
 
þÿÿ
zConnection._read_packetc
Cs¾|j |j¡z|j |¡}Wq˜Wqttfk
rx}z4|jtjkrLWY¢"q|     ¡t
  t j d|f¡‚W5d}~XYqtk
r”|     ¡‚YqXqt|ƒ|krº|     ¡t
  t j d¡‚|S)Nz1Lost connection to MySQL server during query (%s)r)r’rór‚rºrurùrørúrûr¶rrÁrrrr)r”Ú    num_bytesrr rrrrÜs,  þ
 ÿzConnection._read_bytesc
Csb|j |j¡z|j |¡Wn>tk
r\}z | ¡t tj    d|f¡‚W5d}~XYnXdS)NzMySQL server has gone away (%r))
r’rórƒÚsendallrùr¶rrÁrZCR_SERVER_GONE_ERROR)r”rr rrrr·õsÿzConnection._write_bytescCsjd|_|r<zt|ƒ}| ¡WqLd|_d|_‚YqLXnt|ƒ}| ¡||_|jdk    rd|j|_|jS©NF)r‡rÍÚinit_unbuffered_queryrÚ
connectionrur¾rê)r”rårÏrrrræÿs 
 
zConnection._read_query_resultcCs|jr|jjSdSdS©Nr)r‡Ú    insert_idr—rrrr#szConnection.insert_idcCs|jst dd¡‚|jdk    rP|jjr8t d¡|j ¡|jjrJ|     ¡q8d|_t
|t ƒrf|  |j ¡}ttt|ƒdƒ}t d||¡}||d|d…}| |¡tr°t|ƒd|_|tkrÂdS||dd…}ttt|ƒƒ}| |d|…¡||d…}|sÒ|tkrҐqqÒdS)z~
        :raise InterfaceError: If the connection is closed.
        :raise ValueError: If no username was specified.
        rr+Nz.Previous unbuffered result was left incompleterr³)r’rÚInterfaceErrorr‡rÚwarningsÚwarnÚ_finish_unbuffered_queryÚhas_nextréryr€rr…Úminrrrrr·rõrrr)r”ÚcommandrçÚ packet_sizeZpreluderrrrrÆs4 
 
 
 
 
 
  zConnection._execute_commandc
Cs¬t|j dd¡dƒdkr*|jtjO_|jdkr<tdƒ‚t|j    ƒj
}t |jt ƒrd|j  |j¡|_t d|jt|d¡}|jr¾|jtj@r¾| |¡|jj|j|jd|_|j d    ¡|_d
|_||jd }d}d}|jd krôd}t |j |j!¡}n®|jd krd}t |j |j!¡}nŒ|jdkr^d}|j rNt"r<t#dƒt $|j |j!¡}nt"r¢t#dƒnD|jdkr¢d}|jr|jtj@r|j d }n|j ržd}nd }|jtj%@rÆ|t&t'|ƒƒ|7}n4|jtj(@rî|t dt'|ƒ¡|7}n ||d 7}|j)r<|jtj*@r<t |j)t ƒr.|j)  |j¡|_)||j)d 7}|jtj+@r\||pTdd 7}|jtj,@rÔd}|j- .¡D]F\}}|  d¡}|t&t'|ƒƒ|7}|  d¡}|t&t'|ƒƒ|7}qx|t&t'|ƒƒ|7}| |¡| /¡}    |     0¡r@t"rþt#dƒ|     1¡|     2¡}|jtj+@r4|dk    r4| 3||    ¡}    n
t4 5d¡‚nZ|     6¡ršt"rXt#dƒ|jdkrrt 7||    ¡}    n(|jdkrŒt 8||    ¡}    nt4 5d|j¡‚t"r¨t#dƒdS)NÚ.rrézDid not specify a usernamez<iIB23sre)Úserver_hostnamerðTór+Zmysql_native_passwordómysql_native_passwordZcaching_sha2_passwordócaching_sha2_passwordzcaching_sha2: trying fast pathzcaching_sha2: empty passwordZsha256_passwordósha256_passwordóÚBúutf-8zreceived auth switchz$received unknown auth switch requestzreceived extra dataz(Received extra packet for auth method %rzSucceed to auth)9riÚserver_versionÚsplitr8rZ MULTI_RESULTSr-r&rr3Úidryr€rr…rrrrHÚserver_capabilitiesr|rr~Ú wrap_socketr’r/rrºrôÚ_auth_plugin_namerÚscramble_native_passwordr.ÚsaltrõröZscramble_caching_sha2ZPLUGIN_AUTH_LENENC_CLIENT_DATAr)rZSECURE_CONNECTIONrRr†Ú PLUGIN_AUTHZ CONNECT_ATTRSr‘r‹r¿Zis_auth_switch_requestÚ
read_uint8Ú read_stringÚ _process_authrrÁZis_extra_auth_dataÚcaching_sha2_password_authÚsha256_password_auth)
r”Z
charset_idZ    data_initrZauthrespÚ plugin_nameZ connect_attrsrlrmÚ auth_packetrrrrBs°
  ÿ
 
 
 
 
 
 
 
ÿþ 
  ÿz"Connection._request_authenticationc Cs6| |¡}|rRz | |¡WStk
rP|dkrLt tjd|t|ƒf¡‚YnX|dkrft     ||¡S|dkrzt 
||¡S|dkr˜t  |j |  ¡¡}n€|dkr¶t |j |  ¡¡}nb|dkrØt |j |  ¡¡d}n@|d    krî|j d}n*|dkr|}| ¡}|d
@d k}|d @d k}|  ¡}    |    d kr@| |j d¡nš|rÆd}
z| ||    ¡}
| |
d¡WnZtk
r”t tjd||f¡‚Yn0tk
rÂt tjd|||
|    f¡‚YnXnt tjd|f¡‚| ¡}| ¡| ¡s|rüqqü|St tjd|¡‚| |¡| ¡}| ¡|S)NsdialogzGAuthentication plugin '%s' not loaded: - %r missing authenticate methodr1r2r0sclient_ed25519smysql_old_passwordr/smysql_clear_passwordéérs
Password: z3no response - TypeError within plugin.prompt methodzAAuthentication plugin '%s' not loaded: - %r missing prompt methodzTAuthentication plugin '%s' %r didn't respond with string. Returned '%r' to prompt %rz)Authentication plugin '%s' not configured)Ú_get_auth_plugin_handlerZ authenticateÚAttributeErrorrrÁrÚCR_AUTH_PLUGIN_CANNOT_LOADrhrrBrCr<r.Zread_allZed25519_passwordZscramble_old_passwordr?rÚpromptÚ    TypeErrorZCR_AUTH_PLUGIN_ERRr¿Z check_errorrÀ) r”rDrEÚhandlerrrÃÚflagZechoÚlastrKÚresprrrrA°sŽ
 
þþ
  ÿÿ
 
 þþ
þþ þþ
zConnection._process_authc    Csr|j |¡}|s,t|tƒr,|j | d¡¡}|rjz ||ƒ}Wqntk
rft tj    d||f¡‚YqnXnd}|S)NràzXAuthentication plugin '%s' not loaded: - %r cannot be constructed with connection object)
rŽrVryr'rârLrrÁrrJ)r”rDZ plugin_classrMrrrrHÿs  þþ z#Connection._get_auth_plugin_handlercCs
|jdSr")Úserver_thread_idr—rrrrëszConnection.thread_idcCs|jSrU)r3r—rrrÚcharacter_set_nameszConnection.character_set_namecCs|jSrU)r‰r—rrrÚ get_host_infoszConnection.get_host_infocCs|jSrU)Úprotocol_versionr—rrrÚget_proto_infoszConnection.get_proto_infoc    Cs
d}| ¡}| ¡}|||_|d7}| d|¡}|||… d¡|_|d}t d|||d…¡|_|d7}|||d…|_    |d7}t d    |||d
…¡d|_
|d
7}t |ƒ|d krft d |||d …¡\}}}}|d 7}||_ zt |ƒj|_Wntk
rd|_YnX||_tr6td |ƒ|j
|d>O_
trXtd|ƒtd|dƒ}|d7}t |ƒ||kr¢|j    ||||…7_    ||7}|d7}|j
tj@rt |ƒ|kr| d|¡}|dkrò||d… d¡|_n|||… d¡|_dS)Nrrr/rfrréé    r"rGrFz<BHHBzserver_status: %xrz    salt_len:é r,r5)r¿Z get_all_datarTÚfindrâr6rrrQr=r9rZserver_languagerÚnameZserver_charsetÚKeyErrorr¾rõröÚmaxrr>r;)    r”r(rrZ
server_endÚlangÚstatZcap_hZsalt_lenrrrrsN
    
 
z"Connection._get_server_informationcCs|jSrU)r6r—rrrÚget_server_info_szConnection.get_server_info)N)N)F)F)T)N)F)CÚ__name__Ú
__module__Ú __qualname__Ú__doc__r’r;r´rôr r–r˜r›r}r™Úpropertyr¹r¶Ú__del__r=r»rÅr¼rÊrËrÌrÐrÑrÈrÚrÕr×rãrèrérêrìrírîr“rrr¿rr·rær#rÆrrArHrërRrSrUrr_rÚWarningrµr$Z DatabaseErrorZ    DataErrorrÁZIntegrityErrorrZProgrammingErrorZNotSupportedErrorrrrrr*\sÈBØ ? 
 
 
 
    
 
 
    
 
    
M -
 
+nOAr*c@steZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„ZdS)rÍcCsF||_d|_d|_d|_d|_d|_d|_d|_d|_d|_    d|_
dS)z.
        :type connection: Connection
        NrF) r!rêr#r¾Ú warning_countÚmessageÚ field_countÚ descriptionrÎr(r)r”r!rrrr–oszMySQLResult.__init__cCs|jr| ¡dSrU)rr'r—rrrreszMySQLResult.__del__cCsNz@|j ¡}| ¡r | |¡n| ¡r4| |¡n
| |¡W5d|_XdSrU)r!r¿rÀrÅÚis_load_local_packetÚ_read_load_local_packetÚ_read_result_packet©r”Ú first_packetrrrruƒs
  zMySQLResult.readcCsld|_|j ¡}| ¡r0| |¡d|_d|_n8| ¡rP| |¡d|_d|_n| ¡|_|     ¡d|_
dS)zw
        :raise OperationalError: If the connection to the MySQL server is lost.
        :raise InternalError:
        TFNlÿÿÿÿ) rr!r¿rÀrÅrkrlÚread_length_encoded_integerriÚ_get_descriptionsrêrnrrrr s
 
 
 
z!MySQLResult.init_unbuffered_querycCs<t|ƒ}|j|_|j|_|j|_|j|_|j|_|j|_dSrU)rrêr#r¾rgrhr()r”roÚ    ok_packetrrrrÅ©szMySQLResult._read_ok_packetcCsz|jjstdƒ‚t|ƒ}t|j|jƒ}z | ¡Wn|j ¡‚YnX|j ¡}| ¡slt     
t j d¡‚|  |¡dS)NzF**WARN**: Received LOAD_LOCAL packet but local_infile option is false.zCommands Out of Sync)r!rqÚ RuntimeErrorrÚ LoadLocalFileÚfilenamer¸r¿rÀrrÁrrÂrÅ)r”roZ load_packetZsenderrrrrrrl²s&ÿ 
 
ÿþz#MySQLResult._read_load_local_packetcCs(| ¡s dSt|ƒ}|j|_|j|_dS)NFT)Ú is_eof_packetrrgr()r”rZwprrrÚ_check_packet_is_eofÉs z MySQLResult._check_packet_is_eofcCs| ¡|_| ¡| ¡dSrU)rprirqÚ_read_rowdata_packetrnrrrrmÕs
zMySQLResult._read_result_packetcCsP|js
dS|j ¡}| |¡r4d|_d|_d|_dS| |¡}d|_|f|_|S)NFr)rr!r¿rwrÎÚ_read_row_from_packetrê)r”rÚrowrrrÚ_read_rowdata_packet_unbufferedÚs
 
 
z+MySQLResult._read_rowdata_packet_unbufferedcCs,|jr(|j ¡}| |¡rd|_d|_qdSr)rr!r¿rw)r”rrrrr'ìs
 
 
z$MySQLResult._finish_unbuffered_querycCsJg}|j ¡}| |¡r d|_q2| | |¡¡qt|ƒ|_t|ƒ|_dS)z:Read a rowdata packet for each data row in the result set.N)    r!r¿rwÚappendryrrêÚtuplerÎ)r”rÎrrrrrxös
 
 
z MySQLResult._read_rowdata_packetc    Cs†g}|jD]r\}}z | ¡}Wntk
r8Yq~YnX|dk    rr|dk    rT| |¡}trbtd|ƒ|dk    rr||ƒ}| |¡q
t|ƒS)NzDEBUG: DATA = )r Zread_length_coded_stringÚ
IndexErrorrârõrör|r})r”rrzr…Ú    converterrrrrrys  
 
 z!MySQLResult._read_row_from_packetc
Csg|_g|_|jj}|jj}g}t|jƒD]°}|j t¡}|j     |¡|     | 
¡¡|j }|r’|t j krn|}q–|tkrŒ|jdkr†d}q|}q–d}nd}|jj |¡}|tjkr²d}trÊtd|›d|›ƒ|j     ||f¡q*|j ¡}    |     ¡sötdƒ‚t|ƒ|_
dS)z>Read a column descriptor packet for each column in the result.é?Nràz DEBUG: field=z , converter=zProtocol error, expecting EOF)Úfieldsr r!r7r…Úrangerir¿rr|rjZ    type_coder
ZJSONÚ
TEXT_TYPESZ    charsetnrrrVZthroughrõrörvÚAssertionErrorr})
r”r7Z conn_encodingrjr(ÚfieldZ
field_typer…rZ
eof_packetrrrrqs8  
 
 
 
zMySQLResult._get_descriptionsN)r`rarbr–rerur rÅrlrwrmr{r'rxryrqrrrrrÍns      
 rÍc@seZdZdd„Zdd„ZdS)rtcCs||_||_dSrU)rur!)r”rur!rrrr–CszLoadLocalFile.__init__c    Cs¢|jjst dd¡‚|j}zvzDt|jdƒ.}t|jdƒ}|     |¡}|sHqT| |¡q8W5QRXWn,t
k
rŒt  t j d|j›d¡‚YnXW5| d¡XdS)    z3Send data packets from the local file to the serverrr+rerði@zCan't find file 'rÒN)r!r’rr$rr¹rur)r?rurùrÁr    ZFILE_NOT_FOUND)r”ÚconnÚ    open_filer+Úchunkrrrr¸Gs& ÿ
 þzLoadLocalFile.send_dataN)r`rarbr–r¸rrrrrtBsrt):rúrvr]rrrrr%r+rr3rrÚ    constantsrrrr    r
r r Zcursorsr Z
optionfilerÚprotocolrrrrrrrrrHr{Ú ImportErrorÚgetpassÚgetuserrr[rõZBITZBLOBZ    LONG_BLOBZ MEDIUM_BLOBÚSTRINGZ    TINY_BLOBZ
VAR_STRINGZVARCHARZGEOMETRYrƒr„rrr)r*rÍrtrrrrÚ<module>sj      
 
÷ U