diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-01-07 12:20:51 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-01-07 14:08:24 -0500 |
commit | 489301137a4d76e5a46d754ae9c91aad2b3d2c1f (patch) | |
tree | 23735023f7603df79cc0137c72c1d9bf8e52b329 | |
parent | 6c5de1e3ee5c6f24cc6f6c863acc86c77fa99a1e (diff) | |
download | sqlalchemy-489301137a4d76e5a46d754ae9c91aad2b3d2c1f.tar.gz |
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
-rw-r--r-- | doc/build/changelog/unreleased_13/5821.rst | 8 | ||||
-rw-r--r-- | lib/sqlalchemy/dialects/mysql/aiomysql.py | 7 | ||||
-rw-r--r-- | lib/sqlalchemy/dialects/mysql/mysqldb.py | 11 | ||||
-rw-r--r-- | lib/sqlalchemy/dialects/mysql/pymysql.py | 7 | ||||
-rw-r--r-- | setup.cfg | 4 | ||||
-rw-r--r-- | tox.ini | 2 |
6 files changed, 29 insertions, 10 deletions
diff --git a/doc/build/changelog/unreleased_13/5821.rst b/doc/build/changelog/unreleased_13/5821.rst new file mode 100644 index 000000000..a2c5d4082 --- /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/aiomysql.py b/lib/sqlalchemy/dialects/mysql/aiomysql.py index 6381027e9..f0665133f 100644 --- a/lib/sqlalchemy/dialects/mysql/aiomysql.py +++ b/lib/sqlalchemy/dialects/mysql/aiomysql.py @@ -264,10 +264,9 @@ class MySQLDialect_aiomysql(MySQLDialect_pymysql): return pool.AsyncAdaptedQueuePool def create_connect_args(self, url): - args, kw = super(MySQLDialect_aiomysql, self).create_connect_args(url) - if "passwd" in kw: - kw["password"] = kw.pop("passwd") - return args, kw + return super(MySQLDialect_aiomysql, self).create_connect_args( + url, _translate_args=dict(username="user", database="db") + ) def is_disconnect(self, e, connection, cursor): if super(MySQLDialect_aiomysql, self).is_disconnect( diff --git a/lib/sqlalchemy/dialects/mysql/mysqldb.py b/lib/sqlalchemy/dialects/mysql/mysqldb.py index ab5a78aad..0318b5077 100644 --- a/lib/sqlalchemy/dialects/mysql/mysqldb.py +++ b/lib/sqlalchemy/dialects/mysql/mysqldb.py @@ -177,10 +177,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 ad61c9e29..0c321f854 100644 --- a/lib/sqlalchemy/dialects/mysql/pymysql.py +++ b/lib/sqlalchemy/dialects/mysql/pymysql.py @@ -57,6 +57,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 @@ -65,7 +65,9 @@ postgresql_asyncpg = greenlet;python_version>="3" postgresql_psycopg2binary = psycopg2-binary postgresql_psycopg2cffi = psycopg2cffi -pymysql = pymysql +pymysql = + pymysql;python_version>="3" + pymysql<1;python_version<"3" aiomysql = aiomysql [egg_info] @@ -25,7 +25,7 @@ deps=pytest>=4.6.11 # this can be 6.x once we are on python 3 only postgresql: .[postgresql_pg8000]; python_version >= '3' mysql: .[mysql] mysql: .[pymysql] - mysql: .[aiomysql]; python_version >= '3' + mysql: git+https://github.com/sqlalchemy/aiomysql@sqlalchemy_tox; python_version >= '3' mysql: .[mariadb_connector]; python_version >= '3' # we should probably try to get mysql_connector back in the mix |