Documentation Home
MySQL Connector/Python Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 218.2Kb
PDF (A4) - 218.8Kb


MySQL Connector/Python Release Notes  /  Changes in MySQL Connector/Python 8.0  /  Changes in MySQL Connector/Python 8.0.12 (2018-07-27, General Availability)

Changes in MySQL Connector/Python 8.0.12 (2018-07-27, General Availability)

Installation Notes

  • Because the Microsoft Visual C++ 2017 Redistributable installer deletes the Microsoft Visual C++ 2015 Redistributable registry keys that identify its installation, standalone MySQL MSIs may fail to detect the Microsoft Visual C++ 2015 Redistributable if both it and the Microsoft Visual C++ 2017 Redistributable are installed. The solution is to repair the Microsoft Visual C++ 2017 Redistributable via the Windows Control Panel to recreate the registry keys needed for the runtime detection. Unlike the standalone MSIs, MySQL Installer for Windows contains a workaround for the detection problem. (Bug #28345281, Bug #91542)

X DevAPI Notes

  • To increase compliance with the X DevAPI, these Connector/Python changes were made:

    • DatabaseObject: Deprecated: am_i_real() and who_am_i(). Added: get_session() and the session property.

    • Collection.modify(): Deprecated: limit(x, y)'s second parameter, where(condition), and change(CollectionField, ExprOrLiteral). Changed: the modify(condition) condition is now mandatory.

    • Collection.find(): Deprecated: limit(x, y)'s second parameter. Added: limit(x).offset(y).

    • Collection.remove(): Deprecated: limit(x, y)'s second parameter and where(condition). Changed: the modify(condition) condition is now mandatory.

    • Table.select(): Deprecated: limit(x, y)'s second parameter and sort(). Added: limit(x).offset(y).

    • Table.delete(): Deprecated: limit(x, y)'s second parameter and sort(). Removed: delete(x)'s parameter in favor of using where() instead. Added: order_by().

    • Table.update(): Deprecated: limit(x, y)'s second parameter, and the sort() method. Added: order_by().

    • Session: Added: get_schemas().

    • Result: Deprecated: get_document_id() and get_generated_insert_id(). Moved: get_affected_items_count() to the BaseResult class.

    • RowResult: Added: get_columns().

    • SqlResult: Added: has_data().

    • Column: Renamed: ColumnMetaData to Column. Added properties: schema_name, table_name, table_label, column_name, column_label, type, length, fractional_digits, collation_name, character_set_name.

Functionality Added or Changed

  • Removed MySQL Fabric support.

  • An RPM package for installing ARM 64-bit (aarch64) binaries of Connector/Python on Oracle Linux 7 is now available in the MySQL Yum Repository and for direct download.

    Known Limitation for this ARM release: You must enable the Oracle Linux 7 Software Collections Repository (ol7_software_collections) to install this package, and must also adjust the libstdc++7 path. See Yum's Platform Specific Notes for additional details.

Bugs Fixed

  • The default character set changed from 'utf8' (an alias to the deprecated 'utf8mb3' character set) to 'utf8mb4'. (Bug #28188883)

  • Fixed datetime conversion compatibility between Django 2.0 and MySQL 8.0.

    A workaround was to use Connector/Python's pure Python implementation instead the C extension by setting "use_pure=True" in Django's database options. (Bug #27962293, Bug #90541)

  • The get_row() and get_rows() behavior differed with the C (connections with CMySQLConnection) and pure Python (connections with MySQLConnection) implementations of the connector. The resolved differences are:

    • With the pure Python implementation, all data was returned as bytearrays; while the C implementation returned all data as Python types with CMySQLConnection (cext). Both now return Python types.

    • With the pure Python implementation, they returned a tuple with (row(s), eof), but with the C Extension they only returned the row(s). Now both implementations return the tuple form; (row(s), eof).

    • For queries returning a result, with pure Python the warning count was part of the returned eof. With the C extension, warning count was only available using the warning_count property of the connection object. Related, the warning_count property was not available in the pure Python implementation. Now, result includes the warning count for both implementations.

    • Fetching rows using pure Python would automatically set the unread_rows property to False. With the C extension, explicitly calling the free_result() method of the connection object was required. Related, free_result() was only available with the C extension. Now, both implementations set unread_rows to False.

    (Bug #27411275, Bug #27991948, Bug #27802700, Bug #28133321, Bug #27650437, Bug #89305, Bug #90799, Bug #90292, Bug #91107)

  • Connecting with a collation unknown to Connector/Python would yield an unknown character set error. It now properly references the unknown collation. (Bug #27277937)

  • Deprecated the Row.get_string() method in favor of __getitem__. (Bug #26834200, Bug #87777)