Dear MySQL users,
MySQL Connector/Python 8.0.12 is the second GA release version of the
MySQL Connector Python 8.0 series. This series adds support for the new
X DevAPI. The X DevAPI enables application developers to write code
that combines the strengths of the relational and document models using
a modern, NoSQL-like syntax that does not assume previous experience
writing traditional SQL.
To learn more about how to write applications using the X DevAPI, see
http://dev.mysql.com/doc/x-devapi-userguide/en/. For more information
about how the X DevAPI is implemented in MySQL Connector/Python, and its
usage, see http://dev.mysql.com/doc/dev/connector-python.
Please note that the X DevAPI requires MySQL Server version 5.7.12 or
higher with the X Plugin enabled. For general documentation about how to
get started using MySQL as a document store, see
To download MySQL Connector/Python 8.0.12, see the “General Available
(GA) releases” tab at http://dev.mysql.com/downloads/connector/python/
Changes in MySQL Connector/Python 8.0.12 (2018-07-27, General Availability)
* Installation Notes
* X DevAPI Notes
* Functionality Added or Changed
* Bugs Fixed
* 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
* For compliance with the Core 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
+ 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,
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.
* The default character set changed from 'utf8' (an alias
to the deprecated 'utf8mb3' character set) to 'utf8mb4'. (Bug
* 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
* 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
+ 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
+ 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)
Enjoy and thanks for the support!
On behalf of the MySQL Release Team,
Nawaz Nazeer Ahamed