Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django MySQL-正确的连接方式_Mysql_Django_Docker - Fatal编程技术网

Django MySQL-正确的连接方式

Django MySQL-正确的连接方式,mysql,django,docker,Mysql,Django,Docker,我一直在使用Django连接到本地计算机上的MySQL,并使用以下方法进行连接: 运行pip安装mysqlclient并适当更新requirements.txt文件 将settings.py中的数据库连接更新为以下内容: 'ENGINE': 'mysql.connector.django', 'NAME': ...., 'USER': ...., “引擎”:“django.db.backends.mysql”, “名称”:, “用户”: 当我开始使用Dockerfile尝试运行Django

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

  • 运行pip安装mysqlclient并适当更新requirements.txt文件

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

    'ENGINE': 'mysql.connector.django',
    'NAME': ....,
    'USER': ....,
    
    “引擎”:“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连接器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
    

    你能分享dockerfile吗?您是否在dockerfile中安装了mysql客户端?嗨,Iain,我添加了一个示例dockerfile。谢谢,mark您必须安装mysqlclient,我认为
    mysql-client
    py3-mysqlclient
    应该是您需要的:
    运行apk-update和&apk-add-py3-mysqlclient