ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ 4]c@sdZddlZddlmZddlmZddlmZddlmZddlmZd d lm Z d d lm Z d efd YZ defdYZ defdYZ defdYZeZdS(s .. dialect:: mysql+mysqldb :name: mysqlclient (maintained fork of MySQL-Python) :dbapi: mysqldb :connectstring: mysql+mysqldb://:@[:]/ :url: https://pypi.org/project/mysqlclient/ Driver Status ------------- The mysqlclient DBAPI is a maintained fork of the `MySQL-Python `_ DBAPI that is no longer maintained. `mysqlclient`_ supports Python 2 and Python 3 and is very stable. .. _mysqlclient: https://github.com/PyMySQL/mysqlclient-python .. _mysqldb_unicode: Unicode ------- Please see :ref:`mysql_unicode` for current recommendations on unicode handling. Using MySQLdb with Google Cloud SQL ----------------------------------- Google Cloud SQL now recommends use of the MySQLdb dialect. Connect using a URL like the following:: mysql+mysqldb://root@/?unix_socket=/cloudsql/: Server Side Cursors ------------------- The mysqldb dialect supports server-side cursors. See :ref:`mysql_ss_cursors`. iNi(t MySQLCompiler(t MySQLDialect(tMySQLExecutionContext(tMySQLIdentifierPreparer(tTEXTi(tsql(tutiltMySQLExecutionContext_mysqldbcBseZedZRS(cCs$t|dr|jS|jjSdS(Nt _rowcount(thasattrRtcursortrowcount(tself((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR >s(t__name__t __module__tpropertyR (((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR=stMySQLCompiler_mysqldbcBseZRS((R R(((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRFstMySQLIdentifierPreparer_mysqldbcBseZRS((R R(((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRJstMySQLDialect_mysqldbcBseZdZeZeZeZeZdZe Z e Z e ZedZdZejjdZedZdZddZdZd Zd Zd Zed d dddgZ dZ!RS(tmysqldbtformatcKsbtt|j|||_|jdk rUt|jdrU|j|jjnd|_ dS(Nt __version__i(iii( tsuperRt__init__tserver_side_cursorstdbapitNoneR t_parse_dbapi_versionRt_mysql_dbapi_version(R Rtkwargs((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyR[s 6cCsCtjd|}|r;td|jdddDSdSdS(Ns(\d+)\.(\d+)(?:\.(\d+))?css'|]}|dk rt|VqdS(N(Rtint(t.0tx((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pys gsiiii(iii(tretmatchttupletgroup(R tversiontm((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRds#cCsBy#tdj}|j|_tSWnttfk r=tSXdS(NsMySQLdb.cursors(t __import__tcursorstSSCursort _sscursortTruet ImportErrortAttributeErrortFalse(R R(((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pytsupports_server_side_cursorsks  cCs tdS(NtMySQLdb(R'(tcls((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRtscCsQy|jtWn5|jjk rH}|j||drBtSnXtSdS(N(tpingR.RtErrort is_disconnectRR+(R tdbapi_connectionterr((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pytdo_pingxscCs.|j||}|dk r*||_ndS(N(t executemanyRR(R R t statementt parameterstcontextR ((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pytdo_executemanys cCs|jd ko=|jd|jjd|jjdf}|r|tjtjtjdtdddg}ng}t t |j ||S( Nis:show collation where %s = 'utf8mb4' and %s = 'utf8mb4_bin'tCharsett Collations'test collated returns'tcharsettutf8mb4t utf8mb4_bin(i( tserver_version_infotscalartidentifier_preparertquoteRtcollatetcasttliteral_columnRRRt_check_unicode_returns(R t connectionthas_utf8mb4_bintadditional_tests((sT/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.pyRIs  cCs|jdddddd}|j|jtj|dttj|dttj|d ttj|d ttj|d ttj|d ttj|d ttj|dti}dddddg}xM|D]E}||kr||||d0s