Description:
Using Django==1.7.1, python==3.3.2 and mysql-connector-python==2.0.2
When using Django with mysql.connector.django engine, I can not connect to connection_created signal.
How to repeat:
1) Use mysql-connector-python
// settings.py
DATABASES = {
'ENGINE': 'mysql.connector.django',
...
}
2) Connect to the connection_created signal
// connect your signal somewhere
from django.db.backends.signals import connection_created
def connection_setup(**kwargs):
conn = kwargs['connection']
with conn.cursor() as cursor:
# execute some query once django connects to the db
cursor.execute("SET character_set_results = 'latin1'")
connection_created.connect(connection_setup)
3) run the app
Suggested fix:
Performing system checks...
SET character_set_results = 'latin1'
SET character_set_results = 'latin1'
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f5bb8e19680>
Traceback (most recent call last):
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/mysql/connector/django/base.py", line 530, in __init__
self.ensure_connection()
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/backends/__init__.py", line 133, in ensure_connection
self.connect()
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/backends/__init__.py", line 125, in connect
connection_created.send(sender=self.__class__, connection=self)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/dispatch/dispatcher.py", line 198, in send
response = receiver(signal=self, sender=sender, **named)
File "/home/janvor/Backend/backend/opoint/urls.py", line 30, in connection_setup
cursor.execute("select version()")
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/backends/utils.py", line 85, in execute
sql = self.db.ops.last_executed_query(self.cursor, sql, params)
AttributeError: 'NoneType' object has no attribute 'last_executed_query'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/utils/autoreload.py", line 222, in wrapper
fn(*args, **kwargs)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/core/management/commands/runserver.py", line 105, in inner_run
self.validate(display_num_errors=True)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/core/management/base.py", line 362, in validate
return self.check(app_configs=app_configs, display_num_errors=display_num_errors)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/core/management/base.py", line 371, in check
all_issues = checks.run_checks(app_configs=app_configs, tags=tags)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/core/checks/registry.py", line 59, in run_checks
new_errors = check(app_configs=app_configs)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/core/checks/model_checks.py", line 28, in check_all_models
errors.extend(model.check(**kwargs))
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/models/base.py", line 1048, in check
errors.extend(cls._check_fields(**kwargs))
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/models/base.py", line 1124, in _check_fields
errors.extend(field.check(**kwargs))
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/models/fields/__init__.py", line 864, in check
errors = super(AutoField, self).check(**kwargs)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/models/fields/__init__.py", line 192, in check
errors.extend(self._check_backend_specific_checks(**kwargs))
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/models/fields/__init__.py", line 290, in _check_backend_specific_checks
return connection.validation.check_field(self, **kwargs)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/__init__.py", line 40, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/utils.py", line 243, in __getitem__
conn = backend.DatabaseWrapper(db, alias)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/mysql/connector/django/base.py", line 532, in __init__
self._connect()
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/mysql/connector/django/base.py", line 613, in _connect
connection_created.send(sender=self.__class__, connection=self)
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/dispatch/dispatcher.py", line 198, in send
response = receiver(signal=self, sender=sender, **named)
File "/home/janvor/Backend/backend/opoint/urls.py", line 30, in connection_setup
cursor.execute("select version()")
File "/home/janvor/Backend/backend-env/lib/python3.3/site-packages/django/db/backends/utils.py", line 85, in execute
sql = self.db.ops.last_executed_query(self.cursor, sql, params)
AttributeError: 'NoneType' object has no attribute 'last_executed_query'