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

Опубликовал: Sunday, January 22, 2024 в категории Django | Пока нет комментариев

Разобравшись с идеологическими принципами, перейдем к изучению уровня доступа к базе данных в Django. Для начала нужно позаботиться о задании начальной конфигурации; мы должны сообщить Django, с какой СУБД собираемся работать и как к ней подключиться.

Предположим, что вы уже настроили сервер базы данных, запустили его и создали базу (например, командой CREATE DATABASE). При работе с SQLite никакой предварительной настройки не требуется.

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

DATABASE_ENGINE = ” DATABASE_NAME = ” DATABASE_USER = ” DATABASE,PASSWORD = ” DATABASE_HOST - ” DATABASE_PORT = ”

Ниже приведены описания каждого параметра.

• Параметр DATABASE_ENGINE говорит Django, какую СУБД использовать. Он может принимать одно из значений, описанных в табл. 5.1.

Таблица 5.1. Допустимые значения параметра DATABASE ENGINE в Django

Значение

СУБД

Требуемый адаптер

postgresql

PostgreSQL

psycopg версии 1.x, http://www.django- project.com/r/python-pgsql/1/

postgresql_psycopg2

PostgreSQL

psycopg версии 2.x, http://www.django- project.com/r/python-pgsql/

mysql

MySQL

MySQLdb, http://www.djangoproject.eom/r/ python-mysql/

sqlite3

SQLite

Если используется Python 2.5+, то адаптер не нужен. В противном случае - pysqlite, http://www.djangoproject.eom/r/ python-sqlite/

oracle

Oracle

cx_0racle, http://www.djangoproject.com/rl python-oracle/

• Отметим, что, какую бы СУБД вы ни использовали, необходимо загрузить и установить соответствующий адаптер. Все они бесплатные и имеются в Интернете, соответствующие ссылки приведены в столбце «Требуемый адаптер». Если вы работаете в Linux, то, возможно, в дистрибутиве уже имеются нужные пакеты. (Ищите пакеты, называющиеся как-то вроде python-postgresql или python- psycopg.) Например:

DATABASE_ENGINE = ‘postgresql_psycopg2’

•      Параметр DATABASE_NAME сообщает Django имя вашей базы данных, например:

DATABASE_NAME = ‘mydb’

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

DATABASE_NAME = ‘/home/django/mydata.db’

В этом примере мы разместили базу данных SQLite в каталоге /home/ django, но можно выбрать любой каталог.

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

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

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

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

DATABASE_HOST = ‘/var/run/mysql’

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

Находясь внутри оболочки, выполните следующие команды для проверки конфигурации базы данных:

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

Если ничего не произошло, значит, база данных настроена правильно. В противном случае сообщение об ошибке должно дать информацию о том, что не так. В табл. 5.2 перечислены некоторые типичные ошибки.

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

Сообщение об ошибке

Решение

You haven’t set the DATABASE_ENGINE setting yet.

(Вы еще не задали параметр DATABASE. ENGINE)

Параметр DATABASE_ENGINE не должен быть пустой строкой. Допустимые значения приведены в табл. 5.1.

Environment variable DJANGO_SETTINGS_ MODULE is undefined.

(He определена переменная окружения

DJANGO_SETTINGS_MODULE)

Выполните команду python manage, ру, а не просто python.

Error loading module: No module named

(Ошибка при загрузке модуля : Модуль не существует)

Не установлен нужный адаптер базы данных (например, psycopg или MySQLdb). Адаптеры не входят в дистрибутив Django, вы должны скачать и установить их самостоятельно.

isn’t an available database back-end.

(СУБД не поддерживается)

Значением параметра DATABASE_ ENGINE должна быть одна из перечисленных выше строк. Быть может, опечатка?

Database does not exist (База данных не существует)

Измените параметр DATABASE_ NAME, так чтобы он указывал на существующую базу данных, или создайте нужную базу данных командой CREATE DATABASE.

Role does not exist (Роль не существует)

Измените параметр DATABASE_ USER, так чтобы он указывал на существующего пользователя, или создайте нужного пользователя в своей базе данных.

Could not connect to server

(He удалось подключиться к серверу)

Убедитесь, что параметры DATABASE_HOST и DATABASE_PORT заданы правильно, а сервер базы данных запущен.

Источник: Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2010. - 560 е., ил.

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *