L i(dZddlmZddlZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd l m Z d d lmZd d lmZd dlmZddlmZddlmZddlmZe rBddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddl$m%Z%dZ&Gdd ejejNZ(Gd!d"eZ)Gd#d$eZ*Gd%d&eZ+e+Z,y)'a .. dialect:: mysql+mariadbconnector :name: MariaDB Connector/Python :dbapi: mariadb :connectstring: mariadb+mariadbconnector://:@[:]/ :url: https://pypi.org/project/mariadb/ Driver Status ------------- MariaDB Connector/Python enables Python programs to access MariaDB and MySQL databases using an API which is compliant with the Python DB API 2.0 (PEP-249). It is written in C and uses MariaDB Connector/C client library for client server communication. Note that the default driver for a ``mariadb://`` connection URI continues to be ``mysqldb``. ``mariadb+mariadbconnector://`` is required to use this driver. .. mariadb: https://github.com/mariadb-corporation/mariadb-connector-python ) annotationsN)Any)Optional)Sequence)Tuple) TYPE_CHECKING)Union)UUID) MySQLCompiler) MySQLDialect)MySQLExecutionContext)sql)util)sqltypes) Connection)ConnectArgsType)DBAPIConnection) DBAPICursor) DBAPIModule)Dialect)IsolationLevel)PoolProxiedConnection)URL) SQLCompiler)_ResultProcessorType)r rr c eZdZ ddZy) _MariaDBUUIDc2|jrdd}|Sdd}|S)NcZ|(t|dr|jd}t|}|SNdecodeascii)hasattrr# _python_UUIDvalues p/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/mariadbconnector.pyprocessz._MariaDBUUID.result_processor..processJs/$uh/ % W 5(/E cl|1t|dr|jd}tt|}|Sr")r%r#strr&r's r)r*z._MariaDBUUID.result_processor..processTs4$uh/ % W 5 U 34E r+)r(rreturnr)as_uuid)selfdialectcoltyper*s r)result_processorz_MariaDBUUID.result_processorEs# << N Nr+N)r1rr2objectr.z#Optional[_ResultProcessorType[Any]])__name__ __module__ __qualname__r3r+r)rrAs)/ ,r+rcHeZdZUdZded<ddZddZd fd Zd dZxZ S) &MySQLExecutionContext_mariadbconnectorNz Optional[int] _lastrowidc:|jjdS)NFbuffered_dbapi_connectioncursorr0s r)create_server_side_cursorz@MySQLExecutionContext_mariadbconnector.create_server_side_cursoras%%,,e,<>"kk33DO?=r+cBtr|jJ|jSrG)rr;rBs r) get_lastrowidz4MySQLExecutionContext_mariadbconnector.get_lastrowidqs ??. ..r+)r.r)r.None)r.int) r5r6r7r;__annotations__rCrErIrS __classcell__rQs@r)r:r:^s! $J $=<4r+r:c eZdZy)MySQLCompiler_mariadbconnectorN)r5r6r7r8r+r)rZrZwsr+rZceZdZdZdZdZdZdZdZdZ dZ dZ e Z eZdZej$ej(ej,eiZej0ddZdfd ZeddZ dfd Zdd Zdd Zdd Z dd Z!dd Z" dfd Z#ddZ$ddZ% d ddZ& d ddZ'xZ(S) MySQLDialect_mariadbconnectormariadbconnectorTutf8mb4qmarkc|jr`t|jdrJttjd|jj Dcgc] }t |c}Sycc}w)N __version__z(\d+)(?:[-\.]?|$))crbrb)dbapir%tuplerefindallrarU)r0xs r)_dbapi_versionz,MySQLDialect_mariadbconnector._dbapi_versionsa ::'$**m< ZZ,djj.D.DF  sA.c t|di|d|_|j<|jt kr(t ddjdt Dzyy)Nr_z?The minimum required version for MariaDB Connector/Python is %s.c32K|]}t|ywrG)r-).0rgs r) z9MySQLDialect_mariadbconnector.__init__..sK!s1vKsr8)rH__init__ paramstylercrhmariadb_cpy_minimum_versionNotImplementedErrorjoin)r0kwargsrQs r)rnz&MySQLDialect_mariadbconnector.__init__si "6"! :: !""%@@)-hhK/JKKLA "r+ctdS)Nmariadb) __import__)clss r) import_dbapiz*MySQLDialect_mariadbconnector.import_dbapis )$$r+ct||||ryt||jjr#t |j }d|vxsd|vSy)NTz not connectedz isn't validF)rH is_disconnectrL loaded_dbapiErrorr-lower)r0e connectionrAstr_erQs r)rzz+MySQLDialect_mariadbconnector.is_disconnectsV 7 J 7 4,,22 3FLLNE"e+E}/E Er+c|j}|j|jgd}gd}|D]}tj||t |D]}tj||t |jdd}|jK t|jjdzjj}||jz}||d<g|fS#ttf$r d|_Y!wxYw)N)connect_timeout read_timeout write_timeout client_flagport pool_size) local_infilessl_verify_certsslpool_reset_connectioncompressrrz.constants.CLIENTF)translate_connect_argsupdatequeryrcoerce_kw_typerUboolgetrcrvr5 constantsCLIENT FOUND_ROWSAttributeError ImportErrorsupports_sane_rowcount)r0urlopts int_params bool_paramskeyr CLIENT_FLAGSs r)create_connect_argsz1MySQLDialect_mariadbconnector.create_connect_argss))+ CII   0C   c3 / 0 1C   c4 0 1 hh}a0 :: ! 4)JJ''*== )FF|666 #.D 4x#K0 4.3+ 4sAC%%C>=C>c4 |j}|S#d}Y|SxYw)N)errno)r0 exceptionrcs r)_extract_error_codez1MySQLDialect_mariadbconnector._extract_error_codes( ooB  B s cy)Nr^r8)r0rs r)_detect_charsetz-MySQLDialect_mariadbconnector._detect_charsetsr+cy)N) SERIALIZABLEzREAD UNCOMMITTEDzREAD COMMITTEDzREPEATABLE READ AUTOCOMMITr8r0 dbapi_conns r)get_isolation_level_valuesz8MySQLDialect_mariadbconnector.get_isolation_level_valuess r+c,t|jSrG)r autocommitrs r)detect_autocommit_settingz7MySQLDialect_mariadbconnector.detect_autocommit_settingsJ))**r+cN|dk(rd|_yd|_t| ||y)NrTF)rrHset_isolation_level)r0dbapi_connectionlevelrQs r)rz1MySQLDialect_mariadbconnector.set_isolation_levels/ L *.  '*/  ' G '(8% @r+c |jtjdjtjd|dy)Nz XA BEGIN :xidxidTliteral_executeexecutertext bindparams bindparamr0rrs r)do_begin_twophasez/MySQLDialect_mariadbconnector.do_begin_twophase s7 HH_ % 0 0 eS$?  r+c (|jtjdjtjd|d|jtjdjtjd|dy)N XA END :xidrTrzXA PREPARE :xidrrs r)do_prepare_twophasez1MySQLDialect_mariadbconnector.do_prepare_twophaseso HH] # . . eS$?   HH& ' 2 2 eS$?  r+c ,|sI|jtjdjtjd|d|jtjdjtjd|dy)NrrTrzXA ROLLBACK :xidrr0rr is_preparedrecovers r)do_rollback_twophasez2MySQLDialect_mariadbconnector.do_rollback_twophasest   '22MM%dC   HH' ( 3 3 eS$?  r+c |s|j|||jtjdj tj d|dy)NzXA COMMIT :xidrTr)rrrrrrrs r)do_commit_twophasez0MySQLDialect_mariadbconnector.do_commit_twophase2sM  $ $Z 5 HH% & 1 1 eS$?  r+)r.zTuple[int, ...])rsrr.rT)r.r)r~DBAPIModule.Errorrz7Optional[Union[PoolProxiedConnection, DBAPIConnection]]rAzOptional[DBAPICursor]r.r)rrr.r)rrr.rU)rrr.r-)rrr.zSequence[IsolationLevel])rrr.r)rrrrr.rT)rrrrr.rT)TF) rrrrrrrrr.rT))r5r6r7driversupports_statement_cachesupports_unicode_statementsencodingconvert_unicodersupports_sane_multi_rowcountsupports_native_decimaldefault_paramstyler:execution_ctx_clsrZstatement_compilersupports_server_side_cursorsr update_copyr colspecsrUuidrmemoized_propertyrhrn classmethodrxrzrrrrrrrrrrrWrXs@r)r\r\{s F##'HO!#' " >7#' t |<H      %%   L &   %N  )  !  +A /A8FA A   !          .!            r+r\)-__doc__ __future__rretypingrrrrrr uuidr r&baser r rrrr engine.baserengine.interfacesrrrrrrr engine.urlr sql.compilerr sql.type_apirrp _UUID_RETURNrr:rZr\r1r8r+r)rs,#  %')4400,3:!+4(8==!6!67:-B2 ] D LD N (r+