Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Оглавление

Настройка базы данных

Учитывая вышеописанную философию, начнём исследовать слой Django для работы с базой данных. Первое, что нам понадобится — необходимо позаботиться о начальной настройке. Необходимо указать Django какой сервер базы данных использовать и как к нему подключаться.

Используем кодировку UTF-8, пример для MySQL (прим. переводчика)

Откроем на редактирование файл /etc/mysql/my.cnf.

В конец секции [client] добавим строчку:

default-character-set=utf8

В конец секции [mysqld] добавим строчки:

default-character-set=utf8
collation_server=utf8_unicode_ci

Теперь следует перезапустить сервер базы данных и можно приступать к созданию самой базы.

Проверка настроек кодировки (прим. переводчика)

В результате вышеописанных действий вы должны получить:

mysql> show variables like 'coll%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Мы предполагаем, что вы уже установили сервер базы данных, запустили его и создали базу данных внутри. Пример для MySQL:

CREATE USER user@localhost IDENTIFIED BY "topsecret";
CREATE DATABASE mysite;
GRANT ALL ON mysite.* TO user@localhost;

Использование SQLite является особым случаем: не требуется создавать базу данных, так как SQLite использует файлы на файловой системе для хранения своих данных.

Подобно параметру TEMPLATE_DIRS из предыдущей главы, по умолчанию параметры соединения с базой данных определяются в файле конфигурации проекта, settings.py. Отредактируйте этот файл и посмотрите на настройки базы данных:

DATABASE_ENGINE = ''
DATABASE_NAME = ''
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''

Опишем каждый параметр:

  • Параметр DATABASE_ENGINE указывает тип базы данных. Может быть одним из показанных в таблице «Настройки драйвера базы данных».

    Таблица 5.1. Настройки драйвера базы данных

    ЗначениеБаза данныхДрайвер
    postgresqlPostgreSQL psycopg версия 1.х, http://www.djangoproject.com/r/python-pgsql/1/
    postgresql_psycopg2PostgreSQL psycopg версия 2.х, http://www.djangoproject.com/r/python-pgsql/
    mysqlMySQL MySQLdb, http://www.djangoproject.com/r/python-mysql/
    sqlite3SQLite При использовании Python 2.5+ драйвер не нужен. В противном случае http://www.djangoproject.com/r/python-sqlite/
    oracleOracle cx_Oracle, http://www.djangoproject.com/r/python-oracle/


    Следует отметить, что для работы с базой данных потребуется скачать и установить соответствующий драйвер. Каждый описанный драйвер доступен бесплатно, просто проследуйте по ссылке, которая приведена в колонке «Драйвер». Если вы используете Linux, вероятно ваша система управления пакетами может предложить соответствующие пакеты. (Например, ищите пакеты с именами python-postgresql или python-psycopg.)

    Пример:

    DATABASE_ENGINE = 'postgresql_psycopg2'
    

  • Параметр DATABASE_NAME указывает Django имя вашей базы данных. Например:

    DATABASE_NAME = 'mydb'
    

    Если вы использует SQLite, укажите полный путь к файлу базы данных на файловой системе. Например:

    DATABASE_NAME = '/home/django/mydata.db'
    

    Мы используем каталог /home/django в этом примере, но вам следует выбирать каталог, который более подходит для вашей задачи.

  • Параметр DATABASE_USER указывает Django какое имя надо использовать при соединении с базой данных. Если вы используете SQLite, оставьте этот параметр пустым.

  • Параметр DATABASE_PASSWORD указывает Django какой пароль надо использовать при соединении с базой данных. Если вы используете SQLite, оставьте этот параметр пустым.

  • Параметр DATABASE_HOST указывает Django какое имя сервера надо использовать при соединении с базой данных. Если база данных находится на том же компьютере (т.е., localhost), оставьте параметр пустым. Если вы используете SQLite, оставьте этот параметр пустым.

    MySQL является особым случаем. Если значение этого параметра начинается с прямого слэша (/) и вы используете MySQL, то соединение будет произведено через UNIX сокет, например:

    DATABASE_HOST = '/var/run/mysql'
    

  • (Прим. переводчика) Скопировано из прошлой версии книги, так как не потеряло актуальность.

    Параметр DATABASE_PORT указывает Django какой порт надо использовать при соединении с базой данных. Если вы используете SQLite, оставьте этот параметр пустым. В противном случае, соответствующий драйвер базы данных будет использовать стандартный (для конкретной базы данных) порт. В большинстве случаев используется стандартный порт, можете оставить этот параметр пустым.

После заполнения этих параметров, проверьте свою конфигурацию. Чтобы выполнить это, запустите python manage.py shell, как делали это в прошлой главе, в каталоге проекта mysite. (Как мы рассказывали в прошлой главе команда manage.py shell является способом запуска интерпретатора Python с корректными конфигурацией Django проекта. Это необходимо в нашем случае, так как Django должна знать какой файл конфигурации следует спользовать для получения учётных данных для работы с базой данных.)

В интерпретаторе выполните нижеприведённые команды для проверки ваших настроек для соединения с базой данных:

>>> from django.db import connection
>>> cursor = connection.cursor()

Если ничего не произойдёт, значит всё сделано правильно. В противном случае, изучите сообщение об ошибке и выясните, что произошло. Таблица «Сообщения об ошибках в конфигурации доступа к базе данных» содержит некоторые стандартные ошибки.

Таблица 5.2. Сообщения об ошибках в конфигурации доступа к базе данных

Сообщение об ошибкеРешение
Вы не определили значение параметра DATABASE_ENGINE. (You haven't set the DATABASE_ENGINE setting yet.) Установите значение параметра DATABASE_ENGINE. Не оставляйте его пустым.
Не определена переменная среды DJANGO_SETTINGS_MODULE. (Environment variable DJANGO_SETTINGS_MODULE is undefined.) Запустите команду python manage.py shell вместо python.
Ошибка при загрузке модуля _____. Нет модуля с именем _____. (Error loading _____ module: No module named _____.) Вы не установили соответствующий драйвер базы данных, т.е. psycopg или MySQLdb.
_____ не является доступным драйвером базы данных. (_____ isn't an available database backend. Установите параметр DATABASE_ENGINE, указав используемую базу данных, как было описано ранее. Возможно вы опечатались?
База данных _____ не существует. (database _____ does not exist.) Измените параметр DATABASE_NAME, чтобы он указывал на существующую базу данных, или выполните соответствующую команду CREATE DATABASE для создания базы данных.
Роль _____ не существует. (role _____ does not exist.) Измените параметр DATABASE_USER, чтобы он указывал на существующего пользователя или создайте соответствующего пользователя в базе данных.
Не могу подключиться к серверу. (could not connect to server.) Удостоверьтесь, что параметры DATABASE_HOST и DATABASE_PORT установлены правильно, а также, что сервер баз данных работает.



Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
504 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID