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

Я хочу немного уйти от 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?

Ответ 1

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

Обратите внимание, что сначала вам нужно установить mysql в вашей ОС.

brew install mysql (MacOS)

Кроме того, клиентский пакет mysql был изменен для python 3 (MySQL-Client работает только для python 2)

pip3 install mysqlclient

Ответ 2

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

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

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

python manage.py runserver

Удачи..!!

Ответ 3

Как сказано выше, вы можете легко установить 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

Ответ 4

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

pip install mysqlclient

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

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

Ответ 5

На самом деле, есть много проблем с разными средами, версиями 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

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

Ответ 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

Ответ 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',
}

Ответ 8

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

Ответ 9

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

Ответ 10

Сначала вы должны создать базу данных 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/