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

110

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

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

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

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

Тем не менее, мне нужно записать cd в папку firstweb и запустить

python manage.py runserver myip:port

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

Мой второй вопрос заключается в том, что я хочу его настроить, поэтому он использует мою базу данных MySQL. Я вхожу в мои settings.py под /firstweb/firstweb, и я вижу ДВИГАТЕЛЬ и ИМЯ, но я не уверен, что здесь поставить.

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

  • 0
    Примечание: по состоянию на 01.01.2016 года нет драйвера MySQL для python 3.5.x. См. Stackoverflow.com/questions/34456770/… Так что используйте только до Python 3.4. Вы все еще можете использовать Django 1.9 (последний стабильный выпуск на 01/2016).
Теги:
debian

9 ответов

216
Лучший ответ

Поддержка 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.

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


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

python manage.py runserver

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

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

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

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

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

Прежде всего, запустите приведенные ниже команды для установки зависимостей на python, иначе команда python runningerver выведет ошибку.

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

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

python manage.py runserver

Удачи..!!

10

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

  • Установите и запустите xampp с http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, затем запустите Apache Web Server и базу данных MySQL из графического интерфейса.
  • Вы можете настроить свой веб-сервер так, как хотите, но по умолчанию веб-сервер находится в http://localhost:80 и базе данных port 3306, а PhpMyadmin - http://localhost/phpmyadmin/
  • Здесь вы можете увидеть свои базы данных и получить к ним доступ с помощью очень удобного графического интерфейса.
  • Создайте любую базу данных, которую вы хотите использовать в проекте Django.
  • Измените файл settings.py следующим образом:

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

    sudo apt-get install libmysqlclient-dev

    pip install MySQL-python

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

  • Теперь запустите проект Django:

    python manage.py migrate

    python manage.py runningerver

7

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

pip install mysqlclient

Затем измените параметр .py, например

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
  • 0
    Я использую virtualenv с питоном 3.6. Это спасает мою жизнь. Спасибо. Кроме того, не забудьте сначала создать базу данных в MySQL
7

На самом деле, есть много проблем с разными средами, версиями python и так далее. Вам также может потребоваться установить файлы файлы python, поэтому для "перебора" установки я бы выполнил все эти действия:

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

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

3

Запустить эти команды

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

3

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

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

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

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',
 }
}

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

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

  • 0
    Ссылка больше не работает ...;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню