From 1d4b6fa3e37575725f470d31d85b0e4045fb08cb Mon Sep 17 00:00:00 2001 From: Timo Runge Date: Tue, 30 Oct 2018 14:23:07 +0100 Subject: [PATCH 1/3] Fixing unexpected keyword argument 'cursorclass' error after migration from MySQLdb to PyMySQL --- lib/ansible/module_utils/mysql.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ansible/module_utils/mysql.py b/lib/ansible/module_utils/mysql.py index 53c3cb1e4add0e..0fa89a984a17d5 100644 --- a/lib/ansible/module_utils/mysql.py +++ b/lib/ansible/module_utils/mysql.py @@ -28,6 +28,7 @@ # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import os +import sys try: import pymysql as mysql_driver @@ -75,6 +76,9 @@ def mysql_connect(module, login_user=None, login_password=None, config_file='', db_connection = mysql_driver.connect(**config) if cursor_class is not None: - return db_connection.cursor(cursorclass=mysql_driver.cursors.DictCursor) + if mysql_driver is sys.modules['pymysql']: + return db_connection.cursor(cursor=mysql_driver.cursors.DictCursor) + else: + return db_connection.cursor(cursorclass=mysql_driver.cursors.DictCursor) else: return db_connection.cursor() From fd9ca575f2b55311612ca6781f10cb2939e6f533 Mon Sep 17 00:00:00 2001 From: Timo Runge Date: Fri, 11 Jan 2019 17:41:51 +0100 Subject: [PATCH 2/3] Adoptions for mysql.py as suggested by felixfontein. --- lib/ansible/module_utils/mysql.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/ansible/module_utils/mysql.py b/lib/ansible/module_utils/mysql.py index 0fa89a984a17d5..8237efc10d61bf 100644 --- a/lib/ansible/module_utils/mysql.py +++ b/lib/ansible/module_utils/mysql.py @@ -28,13 +28,14 @@ # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import os -import sys try: import pymysql as mysql_driver + _mysql_cursor_param = 'cursor' except ImportError: try: import MySQLdb as mysql_driver + _mysql_cursor_param = 'cursorclass' except ImportError: mysql_driver = None @@ -76,9 +77,6 @@ def mysql_connect(module, login_user=None, login_password=None, config_file='', db_connection = mysql_driver.connect(**config) if cursor_class is not None: - if mysql_driver is sys.modules['pymysql']: - return db_connection.cursor(cursor=mysql_driver.cursors.DictCursor) - else: - return db_connection.cursor(cursorclass=mysql_driver.cursors.DictCursor) + return db_connection.cursor(**{_mysql_cursor_param: mysql_driver.cursors.DictCursor}) else: return db_connection.cursor() From 2db619cf7a1fd5edcf02a20df7cefe0a1abd3342 Mon Sep 17 00:00:00 2001 From: Timo Runge Date: Fri, 11 Jan 2019 22:24:23 +0100 Subject: [PATCH 3/3] Adding changelog fragment. --- ...dule_utils_mysql-unexpected-keyword-argument-cursorclass.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changelogs/fragments/47809-module_utils_mysql-unexpected-keyword-argument-cursorclass.yml diff --git a/changelogs/fragments/47809-module_utils_mysql-unexpected-keyword-argument-cursorclass.yml b/changelogs/fragments/47809-module_utils_mysql-unexpected-keyword-argument-cursorclass.yml new file mode 100644 index 00000000000000..2b13600e67cd7d --- /dev/null +++ b/changelogs/fragments/47809-module_utils_mysql-unexpected-keyword-argument-cursorclass.yml @@ -0,0 +1,2 @@ +bugfixes: +- mysql - fixing unexpected keyword argument 'cursorclass' issue after migration from MySQLdb to PyMySQL.