mysql - Django MySQL - 正确的连接方式
问题描述
我一直在使用 Django 连接到本地计算机上的 MySQL,并且一直使用以下方法进行连接:
运行 pip install mysqlclient 并适当地更新 requirements.txt 文件。
将 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
解决方案
推荐阅读
- architecture - 集成多个实现类似功能的 Store API
- c++ - 奇怪的行为保存文件
- php - 使用 Symfony 和 twig 重定向回来
- angular - 如何缓存特定时间的获取请求?
- css - 背景混合模式不适用于 Safari CSS
- java - Spring Boot 可运行 jar 找不到通过 java.system.class.loader jvm 参数设置的类加载器
- r - 二项式响应的随机森林变量重要性和相关方向
- java - 事务失败时向数据库提交异常堆栈跟踪
- esb - cloudhub 上的连接超时错误:Mule 版本:4.2.2
- angular - 将功能从一个兄弟姐妹传递给另一个兄弟姐妹(2020 年方式)