首页 > 解决方案 > Django MySQL - 正确的连接方式

问题描述

我一直在使用 Django 连接到本地计算机上的 MySQL,并且一直使用以下方法进行连接:

  1. 运行 pip install mysqlclient 并适当地更新 requirements.txt 文件。

  2. 将 settings.py 中的数据库连接更新为如下内容:

    '引擎':'django.db.backends.mysql',
    '名称':......,
    '用户':......,

当我开始使用 Dockerfile 来尝试运行 Django 应用程序时,出现了一些问题。当我构建 Dockerfile 然后运行 ​​django 项目时,我开始收到错误:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

在我看来,有两种可能的解决方案:

1 ) 调整 Dockerfile 以便安装 mysqlclient 所需的软件。这实际上比预期的要棘手一些。您能否为 python:3.10.0a5-alpine3.12 提出一些建议。

2 ) 我正在阅读有关 mysql-connector-python 的信息。目前我还没有得到这个工作。我使用 pip 安装它,更新了需求文件,然后将 settings.py 文件更改为如下内容:

'ENGINE': 'mysql.connector.django',
'NAME': ....,
'USER': ....,

我有两个方面的关注,我非常感谢一些帮助:

1)这些方法中的哪一种是使用 Django 连接到 MySQL 的最合适的方法(或者是否有更合适的方法)?您能否让我知道更新我的项目的确切程序。

2 ) 我担心匹配适当版本的库以连接到我的 MySQL 版本。例如,我的 Mac 上有 MySQL 5.7.29。mysql-connector-python 有很多不同的版本(当前版本是 8.0.23)。如何确保 mysql-connector-python 的版本适合我的 MySQL 版本?同样,如何确保 Dockerfile 的安装命令适合我的 MySQL 版本?

谢谢

标记

Dockerfile 发生了一些变化,因为我尝试了不同的技术,但这是一个示例:

FROM python:3.10.0a5-alpine3.12

ENV PYTHONUNBUFFERED 1


# Echo the Environment variables to help with debugging
RUN echo $DJANGO_DEBUG
RUN echo $API_ENVIRONMENT

EXPOSE 8080

RUN mkdir /code

WORKDIR /code

COPY requirements.txt /code/

RUN pip install --no-cache-dir -r requirements.txt

COPY . /code/

RUN python3 manage.py collectstatic --noinput

RUN python3 manage.py makemigrations

RUN python3 manage.py migrate

ENTRYPOINT gunicorn --bind 0.0.0.0:8080 --workers 3 brokerdata.wsgi

标签: mysqldjangodocker

解决方案


推荐阅读