Reputation: 648
When running the Django app on Azure function, I get this error.
"ENGINE": "django.db.backends.mysql"
Result: Failure Exception: NameError: name '_mysql' is not defined
I'm assuming that I can't install the MySQL module on Azure function.
Upvotes: 0
Views: 86
Reputation: 648
after adding mysql-connector-python packages and changed settings.py. Below exception throws from the code.
System check identified no issues (0 silenced).
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/opt/homebrew/Cellar/[email protected]/3.11.6_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
File "/opt/homebrew/Cellar/[email protected]/3.11.6_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 982, in run
self._target(*self._args, **self._kwargs)
File "/Users/manoj/Desktop/django/.venv/lib/python3.11/site-packages/django/utils/autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "/Users/manoj/Desktop/django/.venv/lib/python3.11/site-packages/django/core/management/commands/runserver.py", line 136, in inner_run
self.check_migrations()
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/core/management/base.py", line 574, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/db/migrations/executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/db/migrations/loader.py", line 58, in __init__
self.build_graph()
File "/Users/manoj/Desktop/django/.venv/lib/python3.11/site-packages/django/db/migrations/loader.py", line 235, in build_graph
self.applied_migrations = recorder.applied_migrations()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
if self.has_table():
^^^^^^^^^^^^^^^^
File "/Users/v/Desktop/django/.venv/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 57, in has_table
with self.connection.cursor() as cursor:
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/db/backends/base/base.py", line 330, in cursor
return self._cursor()
^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/db/backends/base/base.py", line 306, in _cursor
self.ensure_connection()
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/db/backends/base/base.py", line 289, in ensure_connection
self.connect()
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/django/db/backends/base/base.py", line 270, in connect
self.connection = self.get_new_connection(conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/mysql/connector/django/base.py", line 399, in get_new_connection
cnx = mysql.connector.connect(**conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/mysql/connector/pooling.py", line 293, in connect
return CMySQLConnection(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/mysql/connector/connection_cext.py", line 129, in __init__
self.connect(**kwargs)
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/mysql/connector/abstracts.py", line 1234, in connect
self.config(**kwargs)
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/mysql/connector/abstracts.py", line 527, in config
self.raise_on_warnings = config["raise_on_warnings"]
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Desktop/django/.venv/lib/python3.11/site-packages/mysql/connector/abstracts.py", line 1059, in raise_on_warnings
raise ValueError("Expected a boolean type")
ValueError: Expected a boolean type
Upvotes: 0
Reputation: 1327
To use the package i mentioned, you need to change the ENGINE setting in your DATABASES configuration in the Django settings.py file to 'mysql.connector.django'. below is the code
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': 'your_database_name',
'USER': 'your_database_user',
'PASSWORD': 'your_database_password',
'HOST': 'your_database_host',
'PORT': 'your_database_port',
}
}
and also you need to install the mysql-connector-python package.
pip install mysql-connector-python
After changing these, Django will use the mysql-connector-python package as the database connector instead of mysqlclient.
Upvotes: 0