From: Mike Bayer Date: Thu, 7 Jan 2021 17:20:51 +0000 (-0500) Subject: Update connect args for pymysql 1.0.0; aiomysql fixes X-Git-Tag: rel_1_3_23~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d4da4d24596fb5d9c6f497ab24739b901175ffd9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Update connect args for pymysql 1.0.0; aiomysql fixes Fixed deprecation warnings that arose as a result of the release of PyMySQL 1.0, including deprecation warnings for the "db" and "passwd" parameters now replaced with "database" and "password". For the 1.4 version of this patch, we are also changing tox.ini to refer to a local branch of aiomysql that fixes pymysql compatibility issues. Fixes: #5821 Change-Id: I93876b52b2d96b52308f22aeb4f244ac5766a82f (cherry picked from commit 489301137a4d76e5a46d754ae9c91aad2b3d2c1f) --- diff --git a/doc/build/changelog/unreleased_13/5821.rst b/doc/build/changelog/unreleased_13/5821.rst new file mode 100644 index 0000000000..a2c5d40824 --- /dev/null +++ b/doc/build/changelog/unreleased_13/5821.rst @@ -0,0 +1,8 @@ +.. change:: + :tags: bug, mysql + :tickets: 5821 + + Fixed deprecation warnings that arose as a result of the release of PyMySQL + 1.0, including deprecation warnings for the "db" and "passwd" parameters + now replaced with "database" and "password". + diff --git a/lib/sqlalchemy/dialects/mysql/mysqldb.py b/lib/sqlalchemy/dialects/mysql/mysqldb.py index 9eba49887b..67e69c8492 100644 --- a/lib/sqlalchemy/dialects/mysql/mysqldb.py +++ b/lib/sqlalchemy/dialects/mysql/mysqldb.py @@ -179,10 +179,13 @@ class MySQLDialect_mysqldb(MySQLDialect): connection, additional_tests ) - def create_connect_args(self, url): - opts = url.translate_connect_args( - database="db", username="user", password="passwd" - ) + def create_connect_args(self, url, _translate_args=None): + if _translate_args is None: + _translate_args = dict( + database="db", username="user", password="passwd" + ) + + opts = url.translate_connect_args(**_translate_args) opts.update(url.query) util.coerce_kw_type(opts, "compress", bool) diff --git a/lib/sqlalchemy/dialects/mysql/pymysql.py b/lib/sqlalchemy/dialects/mysql/pymysql.py index 80ef1591bd..da3e991536 100644 --- a/lib/sqlalchemy/dialects/mysql/pymysql.py +++ b/lib/sqlalchemy/dialects/mysql/pymysql.py @@ -61,6 +61,13 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb): def dbapi(cls): return __import__("pymysql") + def create_connect_args(self, url, _translate_args=None): + if _translate_args is None: + _translate_args = dict(username="user") + return super(MySQLDialect_pymysql, self).create_connect_args( + url, _translate_args=_translate_args + ) + def is_disconnect(self, e, connection, cursor): if super(MySQLDialect_pymysql, self).is_disconnect( e, connection, cursor diff --git a/setup.cfg b/setup.cfg index f15ab5d7b6..8aa3b6c78a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,4 @@ + [egg_info] tag_build = dev diff --git a/setup.py b/setup.py index d7181867f0..891dcbf77c 100644 --- a/setup.py +++ b/setup.py @@ -186,7 +186,10 @@ def run_setup(with_cext): distclass=Distribution, extras_require={ "mysql": ["mysqlclient"], - "pymysql": ["pymysql"], + "pymysql": [ + 'pymysql; python_version>="3"', + 'pymysql<1; python_version<"3"', + ], "postgresql": ["psycopg2"], "postgresql_psycopg2binary": ["psycopg2-binary"], "postgresql_pg8000": ["pg8000"], diff --git a/tox.ini b/tox.ini index 0f118bae63..3809ed34e6 100644 --- a/tox.ini +++ b/tox.ini @@ -25,7 +25,7 @@ deps=pytest>=4.6.11 # this can be 6.x once we are on python 3 only # needed only for correct profiling results # due to speed improvements in mysqlclient as of 1.4.0 mysql: mysqlclient>=1.4.0 - mysql: pymysql + mysql: .[pymysql] mysql: mysql-connector-python py3{,5,6,7,8,9,10,11}-oracle: cx_oracle>=7.0