Dear MySQL users,
MySQL Connector/Python 8.0.11 is the first 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 http://dev.mysql.com/doc/refman/5.7/en/document-store.html.
To download MySQL Connector/Python 8.0.11, see the “General Available
(GA) releases” tab at http://dev.mysql.com/downloads/connector/python/
Enjoy!
Changes in MySQL Connector/Python 8.0.11 (2018-04-19)
* Functionality Added or Changed
* Bugs Fixed
Functionality Added or Changed
* X DevAPI: Previously, when documents without an _id
attribute were added to a collection, Connector/Python
automatically generated _id for them. Now a MySQL 8
server generates the _id attribute unless a document
already contains one. The generated IDs resulting from a
document-add operation can be obtained using the new
get_generated_ids() method.
This capability requires a MySQL 8.0 server. Because
MySQL 5.7 does not support document ID generation, the
document-add operation returns an error if you do not
define the _id's.
Incompatibility: The get_generated_ids() method replaces
the now removed get_document_ids(). (Bug #27627366)
* Added NOWAIT and SKIP_LOCKED support to the
ReadStatement.lock_shared() and
ReadStatement.lock_exclusive() methods. Example usage:
lock_exclusive(mysqlx.LockContention.SKIP_LOCKED).
* The C extension (cext) is now enabled by default, as the
use_pure option changed from True to False by default.
If the C extension is not available on the system then
the Python implementation is used instead, and use_pure
is set to True.
* Added the X DevAPI SHA256_MEMORY authentication
mechanism.
Example mysqlx.get_session() usages: ?auth=SHA256_MEMORY
via a connection string, "auth":
mysqlx.Auth.SHA256_MEMORY via a dictionary, or
auth=mysqlx.Auth.SHA256_MEMORY via method parameters.
Bugs Fixed
* Warnings are now stored as a list of dictionaries instead
of a list of tuples. In other words, get_warnings()
returns the likes of [{"level": _level_, "code": _code_,
"msg": _msg_}] instead of [(_level_, _code_, _msg_))].
(Bug #27639119)
* The mapped MySQL Server error codes were synced with
MySQL Server 8.0.11. (Bug #27634885)
* Removed upsert functionality from InsertStatement as it
can only be used by collections, so upsert remains
available to AddStatement. (Bug #27589450)
* MySQLConverter.escape() functionality was added to
create_schema()'s count mechanism. (Bug #27528842)
* When using prepared statements, string columns were
returned as bytearrays instead of strings. The returned
value is now a string decoded using the connection's
charset (defaults to 'utf8'), or as a bytearray if this
conversion fails. (Bug #27364914)
* The result from JSON_TYPE() was returned as a bytearray
instead of a string. The returned value is now a string
decoded using the connection's charset (defaults to
'utf8'), or as a bytearray if this conversion fails. (Bug
#24948205, Bug #83516)
* JSON integer values were cast to bytes in Python instead
of integers. (Bug #24948186, Bug #83513)
On Behalf of Oracle/MySQL Release Engineering Team
Prashant Tekriwal