개발/Python

[파이썬] Django에서 MySQL 설정하는 법

MinorMan 2022. 10. 6. 01:32
반응형

<질문>

저는 PHP에서 조금 벗어나 Python을 배우고 싶습니다. Python으로 웹 개발을 하려면 템플릿 및 기타 작업에 도움이 되는 프레임워크가 필요합니다.

모든 웹 개발 항목을 테스트하는 데 사용하는 비프로덕션 서버가 있습니다. 일반적인 MySQL 서버 패키지 대신 MariaDB를 실행하는 데비안 7.1 LAMP 스택입니다.

어제 Django를 설치하고 첫 번째 프로젝트를 만들었습니다.첫 번째 웹. 아직 설정을 변경하지 않았습니다.

여기 내 첫 번째 큰 혼란이 있습니다. 튜토리얼에서 나는 Django를 설치한 사람을 따라갔고, 첫 프로젝트를 시작했고, Apache를 다시 시작했고, Django는 그때부터 작동했습니다. 그는 브라우저로 이동하여 문제 없이 Django 기본 페이지로 이동했습니다.

그러나 나는 첫 번째 웹 폴더로 cd하고 실행해야합니다.

python manage.py runserver myip:port

그리고 그것은 작동합니다. 문제 없어요. 그러나 이것이 이렇게 작동해야 하는지, 그리고 이것이 결과적으로 문제를 일으킬 것인지 궁금합니다.

나의두 번째 질문 내 MySQL 데이터베이스를 사용하도록 설정하려는 것입니다. /firstweb/firstweb 아래의 settings.py로 이동하면 ENGINE과 NAME이 표시되지만 여기에 무엇을 입력해야 할지 잘 모르겠습니다.

그런 다음 USER, PASSWORD 및 HOST 영역에서 이것이 내 데이터베이스와 해당 자격 증명입니까? 내가 사용하는 경우로컬 호스트 그냥 넣어도 될까요로컬 호스트 호스트 영역에서?


<답변1>

MySQL support 추가하는 것은 간단합니다. 당신의DATABASES 사전에 다음과 같은 항목이 있습니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'DB_NAME',
        'USER': 'DB_USER',
        'PASSWORD': 'DB_PASSWORD',
        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}

MySQL을 활용할 수도 있습니다.option files, Django 1.7부터. 다음을 설정하여 이 작업을 수행할 수 있습니다.DATABASES 다음과 같은 배열:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

또한 생성해야 합니다./path/to/my.cnf 위와 유사한 설정을 가진 파일

[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8

Django 1.7의 이 새로운 연결 방법을 사용하면 연결이 설정되는 순서를 아는 것이 중요합니다.

1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.

즉, OPTIONS에서 데이터베이스 이름을 설정하면 이 이름이 NAME보다 우선하여 MySQL 옵션 파일의 모든 항목을 무시합니다.

로컬 컴퓨터에서 애플리케이션을 테스트하는 경우 다음을 사용할 수 있습니다.

python manage.py runserver

추가ip:port 인수를 사용하면 자신이 아닌 다른 시스템이 개발 애플리케이션에 액세스할 수 있습니다. 애플리케이션을 배포할 준비가 되면 다음 장을 살펴보는 것이 좋습니다.Deploying Djangodjangobook

MySQL의 기본 문자 집합은 종종 utf-8이 아니므로 다음 SQL을 사용하여 데이터베이스를 생성해야 합니다.

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

사용하는 경우Oracle's MySQL connector 당신의ENGINE 라인은 다음과 같아야 합니다.

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

먼저 OS에 mysql을 설치해야 합니다.

brew install mysql (MacOS)

또한 mysql 클라이언트 패키지는 python 3(MySQL-Client 파이썬 2에서만 작동합니다)

pip3 install mysqlclient

<답변2>

가장 먼저 아래 명령을 실행하여 python 종속성을 설치하십시오. 그렇지 않으면 python runserver 명령에서 오류가 발생합니다.

sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python

그런 다음 #Andy가 정의한대로 settings.py 파일을 구성하고 마지막으로 실행합니다.

python manage.py runserver

즐감하세요..!!


<답변3>

python3.x를 사용하는 경우 아래 명령을 실행하십시오.

pip install mysqlclient

그런 다음 settings.py를 다음과 같이 변경하십시오.

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }

<답변4>

위에서 말했듯이 xampp를 먼저 쉽게 설치할 수 있습니다.https://www.apachefriends.org/download.html 그런 다음 다음 지침을 따르십시오.

  1. 다음에서 xampp 설치 및 실행http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, 그런 다음 GUI에서 Apache 웹 서버 및 MySQL 데이터베이스를 시작합니다.
  2. 웹 서버를 원하는 대로 구성할 수 있지만 기본적으로 웹 서버는 다음 위치에 있습니다.http://localhost:80 및 데이터베이스port 3306, 및 PhpMyadminhttp://localhost/phpmyadmin/
  3. 여기에서 데이터베이스를 보고 매우 친숙한 GUI를 사용하여 액세스할 수 있습니다.
  4. Django 프로젝트에서 사용하려는 데이터베이스를 만듭니다.
  5. 다음과 같이 settings.py 파일을 수정합니다.

    <사전><코드>데이터베이스 = { '기본': { '엔진': 'django.db.backends.mysql', '이름': 'DB_NAME', '호스트': '127.0.0.1', '포트': '3306', '사용자': '루트', '비밀번호': '', }}
  6. 가상 환경에 다음 패키지를 설치합니다(가상 환경에서 django를 사용하는 경우 더 선호됨).

    sudo apt-get install libmysqlclient-dev

    pip install MySQL-python

  7. 그렇다!! 아주 쉬운 방법으로 Django를 MySQL로 구성했습니다.

  8. 이제 Django 프로젝트를 실행하세요:

    python manage.py 마이그레이션

    파이썬 관리.py 실행 서버


<답변5>

사실 다른 환경, 파이썬 버전 등 많은 문제가 있습니다. 또한 python dev 파일을 설치해야 할 수도 있으므로 설치를 '무차별 대입'하려면 다음을 모두 실행합니다.

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient

수락 된 답변으로 가야합니다. 그리고 그것이 당신에게 중요하다면 불필요한 패키지를 제거할 수 있습니다.


<답변6>

이 명령 실행

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python 
pip install pymysql
pip install mysqlclient

다음과 같이 settings.py를 구성합니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456',
    }
}

mysql 연결 즐기기


<답변7>

  1. 설치mysqlclient

sudo pip3 install mysqlclient

오류가 발생하면:

"python setup.py egg_info" 명령이 오류 코드 1로 실패했습니다. /tmp/pip-install-dbljg4tx/mysqlclient/

그 다음에:

 1. sudo apt install libmysqlclient-dev python-mysqldb

 2. sudo pip3 install mysqlclient
  1. settings.py 수정

    <사전><코드>데이터베이스 = { '기본': { '엔진': 'django.db.backends.mysql', '이름': '웹사이트', '사용자': '루트', '비밀번호': '', '호스트': '127.0.0.1', '포트': '3306', '옵션': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"}, } }

<답변8>

Andy의 답변이 도움이 되지만 django 설정에서 데이터베이스 비밀번호 노출에 대한 우려가 있는 경우 mysql 연결에서 django 공식 구성을 따르는 것이 좋습니다.https://docs.djangoproject.com/en/1.7/ref/databases/

여기에서 인용:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}


# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

설정에서 'HOST': '127.0.0.1'을 바꾸려면 my.cnf에 추가하기만 하면 됩니다.

# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8

유용한 또 다른 옵션은 django용 스토리지 엔진을 설정하는 것입니다. setting.py에서 원할 수 있습니다.

'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}

<답변9>

settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django',
    'USER': 'root',
    'PASSWORD': '*****',
    'HOST': '***.***.***.***',
    'PORT': '3306',
    'OPTIONS': {
        'autocommit': True,
    },
}

}

그 다음에:

python manage.py migrate

성공하면 다음 테이블이 생성됩니다.

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

그리고 당신은 mysql을 사용할 수 있습니다.

이것은 Django 버전 1.11.5에서 테스트한 쇼케이스 예입니다. Django-pool-showcase


<답변10>

MySQL 데이터베이스를 사용하도록 설정하려면 주어진 단계를 따르십시오:

1) Install MySQL Database Connector :

    sudo apt-get install libmysqlclient-dev

2) Install the mysqlclient library :

    pip install mysqlclient

3) Install MySQL server, with the following command :

    sudo apt-get install mysql-server

4) Create the Database :

    i) Verify that the MySQL service is running:

        systemctl status mysql.service

    ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :  

        mysql -u db_user -p


    iii) CREATE DATABASE db_name;

    iv) Exit MySQL server, press CTRL + D.

5) Add the MySQL Database Connection to your Application:

    i) Navigate to the settings.py file and replace the current DATABASES lines with the following:

        # Database
        # https://docs.djangoproject.com/en/2.0/ref/settings/#databases

        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'OPTIONS': {
                    'read_default_file': '/etc/mysql/my.cnf',
                },
            }
        }
        ...

    ii) Next, let’s edit the config file so that it has your MySQL credentials. Use vi as sudo to edit the file and add the following information:

        sudo vi /etc/mysql/my.cnf

        database = db_name
        user = db_user
        password = db_password
        default-character-set = utf8

6) Once the file has been edited, we need to restart MySQL for the changes to take effect :

    systemctl daemon-reload

    systemctl restart mysql

7) Test MySQL Connection to Application:

    python manage.py runserver your-server-ip:8000

<답변11>

이것은 상당히 오래된 질문이지만 누군가 최신 버전의 python 및 django에서 작업하는 경우 다음 단계를 따를 수 있습니다.

Note - Versions
    Python version - 3.9.5
    Django version - 3.2.4
    MySQL server version - 5.7

django를 설치한 후 다음 명령을 실행합니다.

pip install mysqlclient

내 IDE에서 내가 할 경우pip list 이것은 패키지 및 버전 목록입니다.

Package     Version
----------- -------
asgiref     3.3.4
Django      3.2.4
mysqlclient 2.0.3
pip         21.1.2
pytz        2021.1
setuptools  57.0.0
sqlparse    0.4.1

이제 사용할 데이터베이스 스키마를 이미 생성했는지 확인하십시오.

에서settings.py DATABASES 변경 아래의 django 프로젝트 파일

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

에게

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'USER': 'DB_USER',
        'PASSWORD': 'DB_PASSWORD',
        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}

둘 다 실행할 수 있어야 합니다.

python manage.py makemigrations

그리고

python manage.py migrate

<답변12>

먼저 MySQL 데이터베이스를 생성해야 합니다. 다음으로 이동settings.py 파일 및 편집'DATABASES' MySQL 자격 증명이 있는 사전:

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'YOUR_DATABASE_NAME',
 'USER': 'YOUR_MYSQL_USER',
 'PASSWORD': 'YOUR_MYSQL_PASS',
 'HOST': 'localhost',   # Or an IP that your DB is hosted on
 'PORT': '3306',
 }
}

다음은 virtualenv에서 MySQL을 사용하도록 Django를 설정하기 위한 전체 설치 가이드입니다.

http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/


<답변13>

python3 -m pip install mysql-connector
pip install mysqlclient

이 명령은 오류 없이 django에서 mysql db를 설정하는 데 도움이 됩니다.

반응형