MySQL Connector/Python Release Notes
Added support for OpenSSL 3.0. (WL #14815)
Added or renamed collations to align with MySQL Server 8.0.30.
This includes adding support for language-specific
utf8mb4
collations and renaming all existing
utf8_
collations to
utf8mb3_
. In addition,
utf8
is now an alias for
utf8mb4
. Support for MySQL 5.7 collations is
preserved for connections to a MySQL 5.7 server.
(WL #15212)
Implemented an authentication mechanism to instantiate only required authentication plugins according to the authentication handshake performed with MySQL Server. Previously, all available authentication plugins (and their associated third-party modules) were loaded upon initialization. (WL #14822)
Improved PEP 7 and PEP 8 style guideline enforcement by adding
Black
and Isort
tooling
for PEP 8, and clang-format
for PEP 7. The
integration includes git pre-commit hooks.
In addition, Pylint
was also tested and
integrated with a git pre-commit hook.
(WL #15035, WL #15137)
Removed support for the bdist_deb
,
bdist_macos
, and bdist_rpm
build targets from setup.py
. Instead, use
the packages built by Oracle Release Engineering.
(WL #15176)
Empty strings (""
) in the collection fields
used in methods like set()
that are chained
with modify()
are no longer allowed; now only
the dollar sign ($
) is allowed when trying to
replace the entire document.
(Bug #34260344)
The required version of protobuf
is now
3.11.0 through 3.20.1, inclusive, due to a breaking change
introduced in Python protobuf
4.21.0.
(Bug #34231226)
C extension and pure Python cursor types are not interchangeable when using connection objects that are not of the same type; now we check for supported cursor classes and raise a ProgrammingError if the cursor is not of a compatible type. (Bug #34223015)
The C Extension did not function with the
NO_BACKSLASH_ESCAPES
SQL mode
enabled. We fix this by calling the
mysql_real_escape_string_quote()
C API
function instead of
mysql_real_escape_string_quote()
. Prior to
upgrading to this release, you can work around this problem by
using the pure Python implementation instead
(use_pure=True
).
(Bug #107434, Bug #34228442)
For Django, allow setting the connection isolation level with an
isolation_level
OPTIONS
entry
in the Django DATABASES
configuration.
(Bug #107174, Bug #34127959)
The connect()
method's
failover
argument now accepts a tuple, as was
documented, when previously it accepted only a list of
dictionaries.
Thanks to Ville Skyttä for the patch. (Bug #106632, Bug #33923516)
For Django, added the missing
DatabaseIntrospection
_parse_constraint_columns()
method.
(Bug #105993, Bug #33827760)
Fixed potential rounding errors when using arithmetic expressions with decimal data types; decimal values are no longer quoted. (Bug #92790, Bug #28821983)
Disabled SSL usage with Unix socket connections. (Bug #91552, Bug #92260, Bug #28295504, Bug #28880051)