This clone of PyMySQL has been Trio-ized.
Release date: 2021-01-01
- Upstream changed to not showing MySQL warnings by default because they caused too many spurious support issues. Trio-MySQL rejects and reverts this change. Ignoring warnings is dangerous. Don't do it.
- The
.travis
subdirectory has been dropped. Travis is no longer friendly to open source. - Tests for ed25519 (MariaDB 10.x) and sha256 (MySQL 8.x) auth are skipped, for now
- read_timeout and write_timeout options removed (no-ops).
Release date: 2020-09-10
- Fix missing import of ProgrammingError. (#878)
- Fix auth switch request handling. (#890)
Release date: 2020-07-18
This version is the last version supporting Python 2.7.
- MariaDB ed25519 auth is supported.
- Python 3.4 support is dropped.
- Context manager interface is removed from
Connection
. It will be added with different meaning. - Formatting of float object is changed from "3.14" to "3.14e0".
- Use cp1252 codec for latin1 charset.
- Fix decimal literal.
- TRUNCATED_WRONG_VALUE_FOR_FIELD, and ILLEGAL_VALUE_FOR_TYPE are now DataError instead of InternalError.
Release date: 2018-12-18
- cryptography dependency is optional now.
- Fix old_password (used before MySQL 4.1) support.
- Deprecate old_password.
- Stop sending
sys.argv[0]
for connection attribute "program_name". - Close connection when unknown error is happened.
- Deprecate context manager API of Connection object.
Release date: 2018-07-04
- Disabled unintentinally enabled debug log
- Removed unintentionally installed tests
Release date: 2018-07-03
- Fixed caching_sha2_password and sha256_password raise TypeError on PY2 (#700, #702)
Release date: 2018-06-27
- Change default charset from latin1 to utf8mb4. (because MySQL 8 changed) (#692)
- Support sha256_password and caching_sha2_password auth method (#682)
- Add cryptography dependency, because it's needed for new auth methods.
- Remove deprecated
no_delay
option (#694) - Support connection attributes (#679)
- Map LOCK_DEADLOCK to OperationalError (#693)
Release date: 2018-05-07
-
Reduce
cursor.callproc()
roundtrip time. (#636) -
Fixed
cursor.query()
is hunged after multi statement failed. (#647) -
WRONG_DB_NAME and WRONG_COLUMN_NAME is ProgrammingError for now. (#629)
-
Many test suite improvements, especially adding MySQL 8.0 and using Docker. Thanks to Daniel Black.
-
Dropped support for old Python and MySQL which is not tested long time.
Release date: 2017-12-20
-
BACKWARD INCOMPATIBLE
binary_prefix
option is added and off by default because of compatibility with mysqlclient. When you need PyMySQL 0.7 behavior, you have to passbinary_prefix=True
. (#549) -
BACKWARD INCOMPATIBLE
MULTI_STATEMENTS
client flag is no longer set by default, while it was on PyMySQL 0.7. You need to passclient_flag=CLIENT.MULTI_STATEMENTS
when you connect to explicitly enable multi-statement mode. (#590) -
Fixed AuthSwitch packet handling.
-
Raise OperationalError for MariaDB's constraint error. (#607)
-
executemany() accepts query without space between
VALUES
and(
. (#597) -
Support config file containing option without value. (#588)
-
Fixed Connection.ping() returned unintended value.
Release date: 2017-04-06
- Fixed Connection.close() failed when failed to send COM_CLOSE packet.
- Cursor.executemany() accepts query ends with semicolon.
- ssl parameters can be read from my.cnf.
Release date: 2017-02-14
-
SECURITY FIX: Raise RuntimeError when received LOAD_LOCAL packet while
loacal_infile=False
. (Thanks to Bryan Helmig) -
Raise SERVER_LOST error for MariaDB's shutdown packet (#540)
-
Change default connect_timeout to 10.
-
Add bind_address option (#529)
Release date: 2016-09-03
- Fix PyMySQL stop reading rows when first column is empty string (#513) Reverts DEPRECATE_EOF introduced in 0.7.7.
Release date: 2016-09-01
- Revert error message change in 0.7.7. (SQLAlchemy parses error message, #507)
Release date: 2016-08-30
- Add new unicode collation (#498)
- Fix conv option is not used for encoding objects.
- Experimental support for DEPRECATE_EOF protocol.
Release date: 2016-07-29
- Fix SELECT JSON type cause UnicodeError
- Avoid float convertion while parsing microseconds
- Warning has number
- SSCursor supports warnings
Release date: 2016-06-28
- Fix exception raised while importing when getpwuid() fails (#472)
- SSCursor supports LOAD DATA LOCAL INFILE (#473)
- Fix encoding error happen for JSON type (#477)
- Fix test fail on Python 2.7 and MySQL 5.7 (#478)
Release date: 2016-05-26
- Fix AttributeError may happen while Connection.del (#463)
- Fix SyntaxError in test_cursor. (#464)
- frozenset support for query value. (#461)
- Start using readthedocs.io
Release date: 2016-05-19
- Add read_timeout and write_timeout option.
- Support serialization customization by
conv
option. - Unknown type is converted by
str()
, for MySQLdb compatibility. - Support '%%' in
Cursor.executemany()
- Support REPLACE statement in
Cursor.executemany()
- Fix handling incomplete row caused by 'SHOW SLAVE HOSTS'.
- Fix decode error when use_unicode=False on PY3
- Fix port option in my.cnf file is ignored.
Release date: 2016-02-24
- Fix misuse of
max_allowed_packet
parameter. (#426, #407 and #397) - Add %(name)s plceholder support to
Cursor.executemany()
. (#427, thanks to @WorldException)
Release date: 2016-01-14
- Fix auth fail with MySQL 5.1
- Fix escaping unicode fails on Python 2
Release date: 2016-01-10
- Faster binary escaping
- Add
"_binary" prefix
to string literal for binary types. binary types are:bytearray
on Python 2,bytes
andbytearray
on Python 3. This is because recent MySQL show warnings when string literal is invalid for connection encoding. trio_mysql.Binary()
returnsbytearray
on Python 2. This is required to distinguish binary and string.- Auth plugin support.
- no_delay option is ignored. It will be removed in PyMySQL 0.8.
Release date: 2015-09-30
- Allow self signed certificate
- Add max_allowed_packet option
- Fix error when bytes in executemany
- Support geometry type
- Add coveralls badge to README
- Fix some bugs relating to warnings
- Add Cursor.mogrify() method
- no_delay option is deprecated and True by default
- Fix options from my.cnf overrides options from arguments
- Allow socket like object. (It's not feature for end users)
- Strip quotes while reading options from my.cnf file
- Fix encoding issue in executemany()
- Add context manager to cursor
- Fix can't encode blob that is not utf-8 on PY3. (regression of 0.6.4, Thanks to @wiggzz)
Skipped
- Support "LOAD LOCAL INFILE". Thanks @wraziens
- Show MySQL warnings after execute query.
- Fix MySQLError may be wrapped with OperationalError while connectiong. (#274)
- SSCursor no longer attempts to expire un-collected rows within del, delaying termination of an interrupted program; cleanup of uncollected rows is left to the Connection on next execute, which emits a warning at that time. (#287)
- Support datetime and time with microsecond. (#303)
- Use surrogateescape to format bytes on Python 3.
- OperationalError raised from connect() have information about original exception. (#304)
init_command
now support multi statement.Connection.escape()
method now accepts second argument compatible to MySQL-Python.
- Fixed multiple result sets with SSCursor.
- Fixed connection timeout.
- Fixed literal set syntax to work on Py2.6.
- Allow for mysql negative values with 0 hour timedelta.
- Added Connection.begin().
- Fixed old password on Python 3.
- Added support for bulk insert in Cursor.executemany().
- Added support for microseconds in datetimes and dates before 1900.
- Several other bug fixes.
- Added cursor._last_executed for MySQLdb compatibility
- Cursor.fetchall() and .fetchmany now return list, not tuple
- Allow "length of auth-plugin-data" = 0
- Cursor.connection references connection object without weakref
- Improved Py3k support
- Improved PyPy support
- Added IPv6 support
- Added Thing2Literal for Django/MySQLdb compatibility
- Removed errorhandler
- Fixed GC errors
- Improved test suite
- Many bug fixes
- Many performance improvements
- Miscellaneous bug fixes
- Implementation of SSL support
- Implementation of kill()
- Cleaned up charset functionality
- Fixed BIT type handling
- Connections raise exceptions after they are close()'d
- Full Py3k and unicode support
- Implemented most of the extended DBAPI 2.0 spec including callproc()
- Fixed error handling to include the message from the server and support multiple protocol versions.
- Implemented ping()
- Implemented unicode support (probably needs better testing)
- Removed DeprecationWarnings
- Ran against the MySQLdb unit tests to check for bugs
- Added support for client_flag, charset, sql_mode, read_default_file, use_unicode, cursorclass, init_command, and connect_timeout.
- Refactoring for some more compatibility with MySQLdb including a fake trio_mysql.version_info attribute.
- Now runs with no warnings with the -3 command-line switch
- Added test cases for all outstanding tickets and closed most of them.
- Basic Jython support added.
- Fixed empty result sets bug.
- Integrated new unit tests and refactored the example into one.
- Fixed bug with decimal conversion.
- Fixed string encoding bug. Now unicode and binary data work!
- Added very basic docstrings.
- Changed connection parameter name 'password' to 'passwd' to make it more plugin replaceable for the other mysql clients.
- Changed pack()/unpack() calls so it runs on 64 bit OSes too.
- Added support for unix_socket.
- Added support for no password.
- Renamed decorders to decoders.
- Better handling of non-existing decoder.