2013-10-04 4 views
120

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

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

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

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

Меня, однако, у меня есть на компакт-диск в мою папку firstweb и запустить

python manage.py runserver myip:port 

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

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

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

+0

Примечание: в оде 01/2016 нет драйвера MySQL для питона 3.5.x. См. Http://stackoverflow.com/questions/34456770/python-connector-for-django-1-9-and-python-3-5 Так что используйте только до Python 3.4. Вы все еще можете использовать Django 1.9 (последняя стабильная версия с 01/2016). –

ответ

213

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. 

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


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

python manage.py runserver 

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

Mysql часто не UTF-8, поэтому убедитесь, что для создания базы данных с помощью этой SQL:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin 

Если вы используете Oracle's MySQL connector ваш ENGINE линии должен выглядеть следующим образом:

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

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

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

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

python manage.py runserver 

Удачи .. !!

12

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

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

    Sudo APT-получить установку libmysqlclient-DEV

    пип установить MySQL-питон

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

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

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

    питон manage.py runserver

8

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

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

3

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

Другой вариант, который является полезным, чтобы установить ваши S torage engine для django, вы можете захотеть этого в своем setup.py:

'OPTIONS': { 
    'init_command': 'SET storage_engine=INNODB', 
} 
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

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

3

Run эти команды

sudo apt-get install python-dev python3-dev

Sudo APT-получить установку libmysqlclient-DEV

пункт установить MySQL-питон

пункт установить pymysql

пункт установить mysqlclient

Затем настройте settings.py как

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

Enjoy соединение MySQL

9

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

pip install mysqlclient 

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

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': 'DB', 
    'USER': 'username', 
    'PASSWORD': 'passwd', 
    } 
    } 
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 

и и будет можно использовать MySQL.

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

Смежные вопросы