I'd like see some community consensus on the best solution for a MySQL adapter rather than than have more than one build for MySQL.
I don't know the MySQL ecosystem very well. Naoki, is there no interest from MySQLdb in your Python 3 compatibility changes? On the PyPI page it says, "Python-3.0 will be supported in a future release." but it's been like that for several years so who knows if it's actually going to happen.
MySQL-Connector/Python was not so popular (as far as I know).But 1.2.2 GA was released recently. It looks nice to me. It may be popular if Django recommend it.It's repository was moved from launchpad to github. https://github.com/oracle/mysql-connector-pythonAlthough it looks nice to me, there are 2 drawbacks.* They don't put package to PyPI. `--allow-external mysql-connector-python` option is required for `pip install`.* Although repository was moved to Github, bug database is still bit unfriendly (http://bugs.mysql.com/ ).I think if Oracle will be more familiar with OSS community (accepting pull requests, using Travis-CI, etc...),It can replace PyMySQL. Because it's development is more active than us.
>
> Naoki,
>
> Are you aware of performance benchmarks comparing your MySQLdb1 fork and
> mysql-connector-python?
I'll show you some numbers. But I'm not have time for now.
On Monday, September 8, 2014 2:04:26 PM UTC+9, Naoki INADA wrote:>
> Naoki,
>
> Are you aware of performance benchmarks comparing your MySQLdb1 fork and
> mysql-connector-python?
I've posted quick benchmark:Most heavy part of MySQL Driver is parsing packet.There are (number of columsn) descripter packet and (number of columns * number of rows) result packet in query response.On PyPy, packet parsing is faster after JIT warmup.MySQL-Connector/Python reads from socket packet by packed. It makes many system call.PyMySQL uses buffering for faster receiving.
> About your fork, do you plan to maintain it in the middle/long term? I saw
> that issues were not enabled on your Github repo. Is it on purpose? What's
> the plan about bug tracking of your fork?
>
Thanks for pointing it out. I've enabled github issue.
I'll maintain mysqlclient-python until MySQLdb1 development is restarted.
Since I hope MySQLdb1 and mysqlclient-python merged someday (like
setuptools and distribute were merged),
I don't want to implement new feature.
'maintain' means bugfix, support new Python, new libmysqlclient and
new OS, etc...
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: /var/lib/jenkins/workspace/django-selenium/database/mysql/python/python3.2/tests/.env/lib/python3.2/site-packages/_mysql.cpython-32mu.so: undefined symbol: PyUnicode_AsUTF8
Python 2.7 test failures:
custom_pk.tests.CustomPKTests.test_required_pk
fixtures.tests.FixtureLoadingTests.test_loaddata_error_message
generic_relations_regress.tests.GenericRelationTests.test_target_model_is_unsaved
get_or_create.tests.GetOrCreateTests.test_get_or_create_invalid_params
get_or_create.tests.UpdateOrCreateTests.test_integrity
model_fields.tests.BooleanFieldTests.test_null_default
Python 3.4 test failures:
backends.tests.BackendTestCase.test_cursor_execute_with_pyformat
backends.tests.BackendTestCase.test_cursor_executemany_with_pyformat
backends.tests.BackendTestCase.test_cursor_executemany_with_pyformat_iterator
custom_pk.tests.CustomPKTests.test_required_pk
fixtures.tests.FixtureLoadingTests.test_loaddata_error_message
generic_relations_regress.tests.GenericRelationTests.test_target_model_is_unsaved
get_or_create.tests.GetOrCreateTests.test_get_or_create_invalid_params
get_or_create.tests.UpdateOrCreateTests.test_integrity
model_fields.tests.BooleanFieldTests.test_null_default
raw_query.tests.RawQueryTests.test_pyformat_params
On Mon, Sep 8, 2014 at 11:28 PM, Tim Graham <timog...@gmail.com> wrote:
> We'd need mysqlclient to support Python 3.2 (or drop official support for
> MySQL/Python 3.2):
Python 3.3 introduces PEP 393 (Flexible String Representation) and
many Unicode API has
been changed and deprecated. It also introduce unicode literal.
Supporting Python 3.2 will make code messy.
I want to drop Python 3.2 support since I believe most Python 3 users
are aggressive enough
to go forward.
How Python 3.2 important for you?
> Python 2.7 test failures:
>
>
> custom_pk.tests.CustomPKTests.test_required_pk
> fixtures.tests.FixtureLoadingTests.test_loaddata_error_message
> generic_relations_regress.tests.GenericRelationTests.test_target_model_is_unsaved
> get_or_create.tests.GetOrCreateTests.test_get_or_create_invalid_params
> get_or_create.tests.UpdateOrCreateTests.test_integrity
> model_fields.tests.BooleanFieldTests.test_null_default
> Python 3.4 test failures:
>
>
> backends.tests.BackendTestCase.test_cursor_execute_with_pyformat
> backends.tests.BackendTestCase.test_cursor_executemany_with_pyformat
> backends.tests.BackendTestCase.test_cursor_executemany_with_pyformat_iterator
> custom_pk.tests.CustomPKTests.test_required_pk
> fixtures.tests.FixtureLoadingTests.test_loaddata_error_message
> generic_relations_regress.tests.GenericRelationTests.test_target_model_is_unsaved
> get_or_create.tests.GetOrCreateTests.test_get_or_create_invalid_params
> get_or_create.tests.UpdateOrCreateTests.test_integrity
> model_fields.tests.BooleanFieldTests.test_null_default
> raw_query.tests.RawQueryTests.test_pyformat_params
Failed to install index for admin_views.PrePopulatedPostLargeSlug model: (1071, 'Specified key was too long; max key length is 767 bytes')