U aL@sdZddlZddlmZddlmZddlmZddlmZdd lmZdd lm Z d Z Gd d d eZ GdddeZ GdddeZ GdddeZeZdS)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 N) MySQLCompiler) MySQLDialect)MySQLExecutionContext)MySQLIdentifierPreparer)sql)util)rrrc@seZdZddZddZdS)&MySQLExecutionContext_mariadbconnectorcCs|jjddS)NFZbufferedZ_dbapi_connectioncursorselfrkC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\dialects\mysql\mariadbconnector.pycreate_server_side_cursor+sz@MySQLExecutionContext_mariadbconnector.create_server_side_cursorcCs|jjddS)NTr r rrrrcreate_default_cursor.szYsz@MySQLDialect_mariadbconnector._dbapi_version..z(\d+)(?:[-\.]?|$))cr#r#)dbapihasattrtuplerefindallrrrrr_dbapi_versionUs z,MySQLDialect_mariadbconnector._dbapi_versionc sLtt|jf|d|_|jdk rH|jtkrHtddddtDdS)Nrz?The minimum required version for MariaDB Connector/Python is %s.css|]}t|VqdS)N)strrrrr ksz9MySQLDialect_mariadbconnector.__init__..) superr__init__Z paramstyler$r)mariadb_cpy_minimum_versionNotImplementedErrorjoin)rkwargs __class__rrr.cs  z&MySQLDialect_mariadbconnector.__init__cCstdS)NZmariadb) __import__)clsrrrr$nsz#MySQLDialect_mariadbconnector.dbapicsJtt||||rdSt||jjrBt|}d|kp@d|kSdSdS)NTz not connectedz isn't validF)r-r is_disconnect isinstancer$Errorr+lower)re connectionr Zstr_er3rrr7rs  z+MySQLDialect_mariadbconnector.is_disconnectc Cs|}ddddddg}ddd d g}|D]}t||tq(|D]}t||tq@|dd }|jdk rz"t|jjd j j }||j O}Wnt t fk rd |_YnX||d<g|gS)Nconnect_timeout read_timeoutZ write_timeout client_flagportZ pool_sizeZ local_infileZssl_verify_certsslZpool_reset_connectionrz.constants.CLIENTF)Ztranslate_connect_argsr Zcoerce_kw_typerboolgetr$r5r constantsZCLIENTZ FOUND_ROWSAttributeError ImportErrorsupports_sane_rowcount)rurloptsZ int_paramsZ bool_paramskeyr?Z CLIENT_FLAGSrrrcreate_connect_args}s8     z1MySQLDialect_mariadbconnector.create_connect_argscCs z |j}Wnd}YnX|S)N)errno)r exceptionrcrrr_extract_error_codes   z1MySQLDialect_mariadbconnector._extract_error_codecCsdS)Nrr)rr<rrr_detect_charsetsz-MySQLDialect_mariadbconnector._detect_charsetZ SERIALIZABLEzREAD UNCOMMITTEDzREAD COMMITTEDzREPEATABLE READ AUTOCOMMITcs,|dkrd|_nd|_tt|||dS)NrRTF)Z autocommitr-r_set_isolation_level)rr<levelr3rrrSs z2MySQLDialect_mariadbconnector._set_isolation_levelc Cs&|tdtjd|dddS)Nz XA BEGIN :xidxidTZliteral_executeexecutertext bindparams bindparamrr<rUrrrdo_begin_twophases  z/MySQLDialect_mariadbconnector.do_begin_twophasec CsH|tdtjd|dd|tdtjd|dddS)N XA END :xidrUTrVzXA PREPARE :xidrWr\rrrdo_prepare_twophases  z1MySQLDialect_mariadbconnector.do_prepare_twophaseFc CsL|s&|tdtjd|dd|tdtjd|dddS)Nr^rUTrVzXA ROLLBACK :xidrWrr<rUZ is_preparedZrecoverrrrdo_rollback_twophases  z2MySQLDialect_mariadbconnector.do_rollback_twophasec Cs6|s||||tdtjd|dddS)NzXA COMMIT :xidrUTrV)r_rXrrYrZr[r`rrrdo_commit_twophases  z0MySQLDialect_mariadbconnector.do_commit_twophase)TF)TF)%rrrZdriverZsupports_statement_cacheZsupports_unicode_statementsencodingZconvert_unicoderGZsupports_sane_multi_rowcountZsupports_native_decimalZdefault_paramstyler Zexecution_ctx_clsrZstatement_compilerrpreparerZsupports_server_side_cursorsr Zmemoized_propertyr)r. classmethodr$r7rKrPrQsetZ_isolation_lookuprSr]r_rarb __classcell__rrr3rr:sN    %  r)__doc__r'baserrrrrr r/r rrrdialectrrrrs      4