Настройка Django для использования MySQL


Я хочу немного отойти от PHP и изучить Python. Для того, чтобы сделать веб-разработку С Python мне понадобится фреймворк, чтобы помочь с шаблоном и другими вещами.

У меня есть непроизводственный сервер, который я использую для тестирования всех материалов веб-разработки. Это стек лампы Debian 7.1, который запускает MariaDB вместо общего пакета MySQL-server.

вчера я установил Django и создал свой первый проект под названием firstweb. Я ничего не изменил настроек пока нет.

вот мой первый большой кусок путаницы. В учебнике я следил за тем, как парень установил Django, начал свой первый проект, перезапустил Apache, и с тех пор Django просто работал. Он зашел в свой браузер и без проблем перешел на страницу Django по умолчанию.

меня, однако, у меня есть на CD в папку firstweb и работать

python manage.py runserver myip:port

и это работает. Не проблема. Но мне интересно, если он должен работать так, и если это вызовет проблемы вниз по линии?

мой второй вопрос это то, что я хочу настроить его так, чтобы он использовал мою базу данных MySQL. Я иду в свой settings.py под /firstweb/firstweb и я вижу двигатель и имя, но я не уверен, что поставить здесь.

а затем в области пользователя, пароля и хоста это моя база данных и ее учетные данные? Если я использую localhost могу я просто поставить localhost в зоне хоста?

10 134

10 ответов:

поддержка 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',
    }
}

у вас также есть возможность использовать MySQL опции файлы, по состоянию на 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.

другими словами, если вы установите имя базы данных в параметрах, это будет иметь приоритет над именем, которое переопределит что-либо в файле опций MySQL.


если вы просто тестируете приложение на локальном компьютере, вы можете использовать

python manage.py runserver

добавлять ip:port аргумент позволяет машинам, отличным от вашего собственного, получить доступ к вашей разработке приложение. После того, как вы будете готовы развернуть свое приложение, я рекомендую взглянуть на главу о Развертывание Django на djangobook

набор символов Mysql по умолчанию часто не utf-8, поэтому убедитесь, что вы создали свою базу данных с помощью этого sql:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

если вы используете MySQL коннектор Oracle код ENGINE строка должна выглядеть так:

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

для самого первого запуска выполните следующие команды для установки зависимостей python в противном случае команда python runserver выдаст ошибку.

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

затем настроить settings.py файл, как определено #Andy и при последнем выполнении:

python manage.py runserver

получать удовольствие..!!

как все сказано выше, вы можете легко установить xampp сначала из https://www.apachefriends.org/download.html Затем следуйте инструкциям, как:

  1. установите и запустите xampp из http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, затем запустите веб-сервер Apache и базу данных MySQL из графического интерфейса.
  2. вы можете настроить свой веб сервер как вы хотите, но по умолчанию веб-сервер находится на http://localhost:80 и базы данных port 3306, и PhpMyadmin в http://localhost/phpmyadmin/
  3. отсюда вы можете увидеть свои базы данных и получить к ним доступ с помощью очень дружественного графического интерфейса.
  4. создайте любую базу данных, которую вы хотите использовать в своем проекте Django.
  5. редактировать как:

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
    
  6. установите следующие пакеты в virtualenv (если вы используете django на virtualenv, что более предпочтительно):

    sudo apt-get install libmysqlclient-dev

    pip установить MySQL-python

  7. вот именно!! вы настроили Django с MySQL очень простым способом.

  8. теперь запустите свой проект Django:

    python manage.py мигрировать

    python manage.py runserver

Если вы используете python3.x затем выполните команду

pip install mysqlclient

затем изменить setting.py как

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

на самом деле, есть много проблем с различными средами, версиями python, и так далее. Возможно, Вам также потребуется установить файлы 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

вы должны быть хороши, чтобы пойти с принятым ответом. И можете удалить ненужные пакеты, если это важно для вас.

ответ Энди помогает, Но если у вас есть озабоченность по поводу раскрытия пароля базы данных в настройках django, я предлагаю следовать официальной конфигурации django на mysql connection: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' в настройках, просто добавьте его в мой.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',
}

выполните следующие команды

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 connection

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

и u будет использовать mysql.

это демонстрационный пример, тест на Django версии 1.11.5: Django-pool-showcase

сначала необходимо создать базу данных MySQL. Затем перейдите к редактировать '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',
 }
}

вот полное руководство по установке для настройки Django для использования MySQL на virtualenv:

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

выполните указанные шаги, чтобы настроить его для использования базы данных 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