zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
¸ý°d‰&ã@s¼dZddlmZddlmZddlmZddlmZddlm    Z    ddlm
Z
dd    lm Z Gd
d „d ƒZ Gd d „d e ƒZ Gdd„deƒZGdd„deƒZGdd„dƒZGdd„deƒZeZdS)uV
.. dialect:: mysql+aiomysql
    :name: aiomysql
    :dbapi: aiomysql
    :connectstring: mysql+aiomysql://user:password@host:port/dbname[?key=value&key=value...]
    :url: https://github.com/aio-libs/aiomysql
 
.. warning:: The aiomysql dialect is not currently tested as part of
   SQLAlchemy’s continuous integration. As of September, 2021 the driver
   appears to be unmaintained and no longer functions for Python version 3.10,
   and additionally depends on a significantly outdated version of PyMySQL.
   Please refer to the :ref:`asyncmy` dialect for current MySQL/MariaDB asyncio
   functionality.
 
The aiomysql dialect is SQLAlchemy's second Python asyncio dialect.
 
Using a special asyncio mediation layer, the aiomysql dialect is usable
as the backend for the :ref:`SQLAlchemy asyncio <asyncio_toplevel>`
extension package.
 
This dialect should normally be used only with the
:func:`_asyncio.create_async_engine` engine creation function::
 
    from sqlalchemy.ext.asyncio import create_async_engine
    engine = create_async_engine("mysql+aiomysql://user:pass@hostname/dbname?charset=utf8mb4")
 
 
é)ÚMySQLDialect_pymysqlé)Úpool)Úutil)ÚAdaptedConnection)Úasyncio)Úawait_fallback)Ú
await_onlyc@s®eZdZdZdZdd„Zedd„ƒZedd„ƒZed    d
„ƒZ    e    j
d d
„ƒZ    ed d „ƒZ dd„Z d#dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd$dd „Zd!d"„ZdS)%ÚAsyncAdapt_aiomysql_cursorF)Ú_adapt_connectionÚ _connectionÚawait_Ú_cursorÚ_rowscCs:||_|j|_|j|_|j ¡}| | ¡¡|_g|_dS©N)r r r ÚcursorÚ
__aenter__rr©ÚselfZadapt_connectionr©rúYd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/dialects/mysql/aiomysql.pyÚ__init__9s 
z#AsyncAdapt_aiomysql_cursor.__init__cCs|jjSr)rÚ description©rrrrrDsz&AsyncAdapt_aiomysql_cursor.descriptioncCs|jjSr)rÚrowcountrrrrrHsz#AsyncAdapt_aiomysql_cursor.rowcountcCs|jjSr©rÚ    arraysizerrrrrLsz$AsyncAdapt_aiomysql_cursor.arraysizecCs ||j_dSrr©rÚvaluerrrrPscCs|jjSr)rÚ    lastrowidrrrrrTsz$AsyncAdapt_aiomysql_cursor.lastrowidcCsg|jdd…<dSr©rrrrrÚcloseXsz AsyncAdapt_aiomysql_cursor.closeNcCs| | ||¡¡Sr)r Ú_execute_async)rÚ    operationÚ
parametersrrrÚexecutebsz"AsyncAdapt_aiomysql_cursor.executecCs| | ||¡¡Sr)r Ú_executemany_async©rr#Zseq_of_parametersrrrÚ executemanyes
ÿz&AsyncAdapt_aiomysql_cursor.executemanyc Ãs„|jj4IdHšd|dkr.|j |¡IdH}n|j ||¡IdH}|js^t|j ¡IdHƒ|_|W5QIdHR£SQIdHRXdSr)r Ú_execute_mutexrr%Ú server_sideÚlistÚfetchallr)rr#r$Úresultrrrr"jsz)AsyncAdapt_aiomysql_cursor._execute_asyncc ÃsH|jj4IdHš(|j ||¡IdHW5QIdHR£SQIdHRXdSr)r r)rr(r'rrrr&ysz-AsyncAdapt_aiomysql_cursor._executemany_asynccGsdSrr)rZ
inputsizesrrrÚ setinputsizes}sz(AsyncAdapt_aiomysql_cursor.setinputsizesccs|jr|j d¡VqdS©Né©rÚpoprrrrÚ__iter__€sz#AsyncAdapt_aiomysql_cursor.__iter__cCs|jr|j d¡SdSdSr/r1rrrrÚfetchone„s z#AsyncAdapt_aiomysql_cursor.fetchonecCs8|dkr|j}|jd|…}|j|d…|jdd…<|Sr/)rr)rÚsizeÚretvalrrrÚ    fetchmanyŠs
z$AsyncAdapt_aiomysql_cursor.fetchmanycCs |jdd…}g|jdd…<|Srr )rr6rrrr,’sz#AsyncAdapt_aiomysql_cursor.fetchall)N)N)Ú__name__Ú
__module__Ú __qualname__r*Ú    __slots__rÚpropertyrrrÚsetterrr!r%r(r"r&r.r3r4r7r,rrrrr
/s. 
 
 
 
 
 
 
 
r
c@s>eZdZdZdZdd„Zdd„Zdd„Zdd
d „Zd d „Z    d    S)ÚAsyncAdapt_aiomysql_ss_cursorrTcCs<||_|j|_|j|_|j |jjj¡}| | ¡¡|_dSr)    r r r rÚdbapiÚaiomysqlZSSCursorrrrrrrrœsÿz&AsyncAdapt_aiomysql_ss_cursor.__init__cCs$|jdk    r | |j ¡¡d|_dSr)rr r!rrrrr!§s
z#AsyncAdapt_aiomysql_ss_cursor.closecCs| |j ¡¡Sr)r rr4rrrrr4¬sz&AsyncAdapt_aiomysql_ss_cursor.fetchoneNcCs| |jj|d¡S)N)r5)r rr7)rr5rrrr7¯sz'AsyncAdapt_aiomysql_ss_cursor.fetchmanycCs| |j ¡¡Sr)r rr,rrrrr,²sz&AsyncAdapt_aiomysql_ss_cursor.fetchall)N)
r8r9r:r;r*rr!r4r7r,rrrrr>˜s 
r>c@sZeZdZeeƒZdZdd„Zdd„Zdd„Z    dd    „Z
dd d „Z d d„Z dd„Z dd„ZdS)ÚAsyncAdapt_aiomysql_connection)r?r)cCs||_||_t ¡|_dSr)r?r rÚLockr))rr?Ú
connectionrrrrºsz'AsyncAdapt_aiomysql_connection.__init__cCs| |j |¡¡Sr)r r Úping)rZ    reconnectrrrrD¿sz#AsyncAdapt_aiomysql_connection.pingcCs
|j ¡Sr)r Úcharacter_set_namerrrrrEÂsz1AsyncAdapt_aiomysql_connection.character_set_namecCs| |j |¡¡dSr)r r Ú
autocommitrrrrrFÅsz)AsyncAdapt_aiomysql_connection.autocommitFcCs|r t|ƒSt|ƒSdSr)r>r
)rr*rrrrÈsz%AsyncAdapt_aiomysql_connection.cursorcCs| |j ¡¡dSr)r r ÚrollbackrrrrrGÎsz'AsyncAdapt_aiomysql_connection.rollbackcCs| |j ¡¡dSr)r r ÚcommitrrrrrHÑsz%AsyncAdapt_aiomysql_connection.commitcCs|j ¡dSr)r r!rrrrr!Ôsz$AsyncAdapt_aiomysql_connection.closeN)F)r8r9r:Ú staticmethodr    r r;rrDrErFrrGrHr!rrrrrA¶s
rAc@seZdZdZeeƒZdS)Ú&AsyncAdaptFallback_aiomysql_connectionrN)r8r9r:r;rIrr rrrrrJÙsrJc@s$eZdZdd„Zdd„Zdd„ZdS)ÚAsyncAdapt_aiomysql_dbapicCs||_||_d|_| ¡dS)NÚformat)r@ÚpymysqlZ
paramstyleÚ_init_dbapi_attributes)rr@rMrrrràsz"AsyncAdapt_aiomysql_dbapi.__init__cCs@dD]}t||t|j|ƒƒqdD]}t||t|j|ƒƒq"dS)N) ÚWarningÚErrorÚInterfaceErrorZ    DataErrorZ DatabaseErrorZOperationalErrorrQZIntegrityErrorZProgrammingErrorZ InternalErrorZNotSupportedError)ÚNUMBERÚSTRINGZDATETIMEÚBINARYÚ    TIMESTAMPÚBinary)ÚsetattrÚgetattrr@rM)rÚnamerrrrNæs z0AsyncAdapt_aiomysql_dbapi._init_dbapi_attributescOsJ| dd¡}t |¡r.t|t|jj||ŽƒƒSt|t|jj||ŽƒƒSdS©NÚasync_fallbackF)    r2rÚasboolrJrr@ÚconnectrAr    )rÚargÚkwr[rrrr]s 
þþz!AsyncAdapt_aiomysql_dbapi.connectN)r8r9r:rrNr]rrrrrKßsrKcsdeZdZdZdZdZeZdZe    dd„ƒZ
e    dd„ƒZ ‡fdd„Z ‡fd    d
„Z d d „Zd d„Z‡ZS)ÚMySQLDialect_aiomysqlr@TcCsttdƒtdƒƒS)Nr@rM)rKÚ
__import__)ÚclsrrrÚ import_dbapisÿz"MySQLDialect_aiomysql.import_dbapicCs(|j dd¡}t |¡rtjStjSdSrZ)ÚqueryÚgetrr\rZFallbackAsyncAdaptedQueuePoolZAsyncAdaptedQueuePool)rbÚurlr[rrrÚget_pool_classs
z$MySQLDialect_aiomysql.get_pool_classcstƒj|tddddS)NÚuserÚdb)ÚusernameZdatabase)Z_translate_args)ÚsuperÚcreate_connect_argsÚdict)rrf©Ú    __class__rrrl(s
ÿz)MySQLDialect_aiomysql.create_connect_argscs,tƒ |||¡rdSt|ƒ ¡}d|kSdS)NTz not connected)rkÚ is_disconnectÚstrÚlower)rÚerCrZstr_ernrrrp-s z#MySQLDialect_aiomysql.is_disconnectcCsddlm}|jS)Nr0)ÚCLIENT)Zpymysql.constantsrtZ
FOUND_ROWS)rrtrrrÚ_found_rows_client_flag4s z-MySQLDialect_aiomysql._found_rows_client_flagcCs|jSr)r )rrCrrrÚget_driver_connection9sz+MySQLDialect_aiomysql.get_driver_connection)r8r9r:ZdriverZsupports_statement_cacheZsupports_server_side_cursorsr>Z    _sscursorZis_asyncÚ classmethodrcrgrlrprurvÚ __classcell__rrrnrr`s
 
      r`N)Ú__doc__rMrÚrrZenginerZutil.concurrencyrrr    r
r>rArJrKr`ÚdialectrrrrÚ<module>    s       i#0.