MySQL을 사용하도록 장고 설정


171

PHP에서 조금 벗어나서 Python을 배우고 싶습니다. 파이썬으로 웹 개발을하려면 템플릿과 다른 것들을 도울 프레임 워크가 필요합니다.

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

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

여기 내 첫 번째 큰 혼란이 있습니다. 튜토리얼에서 나는 남자가 Django를 설치하고, 그의 첫 프로젝트를 시작하고, Apache를 다시 시작했으며, Django는 그때부터 일했습니다. 그는 브라우저로 가서 장고 기본 페이지로 갔다.

그러나 나는 firstweb 폴더로 cd하고 실행해야합니다.

python manage.py runserver myip:port

그리고 작동합니다. 문제 없어요. 그러나 이것이 이와 같이 작동 해야하는지 궁금하고 이것이 문제가 될 수 있습니까?

두 번째 질문은 내가 내 MySQL 데이터베이스를 사용 있도록 설정 할 것입니다. / firstweb / firstweb 아래에 settings.py로 들어가 엔진과 이름이 표시되지만 여기에 무엇을 넣을 지 잘 모르겠습니다.

그런 다음 USER, PASSWORD 및 HOST 영역에서 이것이 내 데이터베이스 및 자격 증명입니까? localhost 를 사용하는 경우 localhost 를 HOST 영역에 넣을 수 있습니까?


참고 : od 01/2016으로 python 3.5.x 용 MySQL 드라이버는 없습니다. stackoverflow.com/questions/34456770/…을 참조하십시오. 따라서 Python 3.4까지만 사용 하십시오 . Django 1.9를 계속 사용할 수 있습니다 (2016 년 1 월 기준 최신 안정 릴리스).
Tomas Tintera

답변:


316

MySQL 지원 은 간단합니다. 당신의에서 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',
    }
}

Django 1.7부터 MySQL 옵션 파일 을 활용할 수있는 옵션도 있습니다 . 다음 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인수를 추가하면 자신 이외의 기계가 개발 응용 프로그램에 액세스 할 수 있습니다. 응용 프로그램을 배포 할 준비가되면, 나는에 관한 장에서 보라는 권유를 배포 장고djangobook

MySQL의 기본 문자 집합은 종종 UTF-8이 아니므로 다음 SQL을 사용하여 데이터베이스를 작성하십시오.

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

당신이 사용하는 경우 오라클의 MySQL의 커넥터를 당신의 ENGINE라인은 다음과 같이한다 :

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

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

brew install mysql (MacOS)

또한 mysql 클라이언트 패키지는 python 3에서 변경되었습니다 ( MySQL-Clientpython 2에서만 작동합니다)

pip3 install mysqlclient

26

맨 먼저 파이썬 의존성을 설치하려면 아래 명령을 실행하십시오. 그렇지 않으면 python runserver 명령이 오류를 발생시킵니다.

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

그런 다음 #Andy에 의해 정의 된대로 settings.py 파일을 구성하고 마지막에 다음을 실행하십시오.

python manage.py runserver

재밌게 .. !!


18

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

pip install mysqlclient

그런 다음 setting.py를 변경하십시오.

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

1
python 3.6과 함께 virtualenv를 사용하고 있습니다. 이것은 내 생명을 구합니다. 감사합니다. 또한 mysql에서 DB를 먼저 만들어야합니다
Fred

15

위에서 언급했듯이 https://www.apachefriends.org/download.html 에서 xampp를 쉽게 설치할 수 있습니다 .

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

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
  6. virtualenv에 다음 패키지를 설치하십시오 (virtuenv에서 django를 사용하는 경우 더 선호 됨).

    sudo apt-get 설치 libmysqlclient-dev

    pip 설치 MySQL-python

  7. 그게 다야 !! 매우 쉬운 방법으로 MySQL과 함께 Django를 구성했습니다.

  8. 이제 Django 프로젝트를 실행하십시오 :

    python manage.py 마이그레이션

    python manage.py runserver


7

실제로 다른 환경, 파이썬 버전 등 많은 문제가 있습니다. 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

당신은 받아 들여지는 대답을 잘 따라야합니다 중요하지 않은 패키지를 제거 할 수 있습니다.


7

이 명령을 실행

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 연결을 즐기십시오


4

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 용 스토리지 엔진을 설정하는 것입니다. 설정에서 원할 수도 있습니다.

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

4

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


3
  1. 설치 mysqlclient

sudo pip3 install mysqlclient

오류가 발생하면 :

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

그때:

 1. sudo apt install libmysqlclient-dev python-mysqldb

 2. sudo pip3 install mysqlclient

  1. settings.py 수정

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'website',
            'USER': 'root',
            'PASSWORD': '',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'OPTION': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"},
        }
    }

1

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, lets 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

0

먼저 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/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.