Django
Настройка базы данных
Поиск…
MySQL / MariaDB
Django поддерживает MySQL 5.5 и выше.
Убедитесь, что установлены некоторые пакеты:
$ sudo apt-get install mysql-server libmysqlclient-dev
$ sudo apt-get install python-dev python-pip # for python 2
$ sudo apt-get install python3-dev python3-pip # for python 3
Как и один из драйверов Python MySQL ( mysqlclient
соответствует рекомендуемому выбору для Django):
$ pip install mysqlclient # python 2 and 3
$ pip install MySQL-python # python 2
$ pip install pymysql # python 2 and 3
Кодирование базы данных не может быть установлено Django, но должно быть настроено на уровне базы данных. Найдите
default-character-set
поdefault-character-set
в my.cnf (или/etc/mysql/mariadb.conf/*.cnf
) и установите кодировку:
[mysql]
#default-character-set = latin1 #default on some systems.
#default-character-set = utf8mb4 #default on some systems.
default-character-set = utf8
...
[mysqld]
#character-set-server = utf8mb4
#collation-server = utf8mb4_general_ci
character-set-server = utf8
collation-server = utf8_general_ci
Конфигурация базы данных для MySQL или MariaDB
#myapp/settings/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'USER': 'DB_USER',
'PASSWORD': 'DB_PASSWORD',
'HOST': 'localhost', # Or an IP Address that your database is hosted on
'PORT': '3306',
#optional:
'OPTIONS': {
'charset' : 'utf8',
'use_unicode' : True,
'init_command': 'SET '
'storage_engine=INNODB,'
'character_set_connection=utf8,'
'collation_connection=utf8_bin'
#'sql_mode=STRICT_TRANS_TABLES,' # see note below
#'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
},
'TEST_CHARSET': 'utf8',
'TEST_COLLATION': 'utf8_general_ci',
}
}
Если вы используете соединитель MySQL Oracle, ваша линия ENGINE
должна выглядеть так:
'ENGINE': 'mysql.connector.django',
Когда вы создаете базу данных, убедитесь, что для указания кодировки и сопоставления:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
Начиная с MySQL 5.7 и последующих обновлений MySQL 5.6 значение по умолчанию для параметра sql_mode содержит STRICT_TRANS_TABLES . Этот параметр увеличивает предупреждения при ошибках, когда данные усекаются при вставке. Django настоятельно рекомендует активировать строгий режим для MySQL, чтобы предотвратить потерю данных (STRICT_TRANS_TABLES или STRICT_ALL_TABLES). Чтобы включить добавление в /etc/my.cnf
sql-mode = STRICT_TRANS_TABLES
PostgreSQL
Убедитесь, что установлены некоторые пакеты:
sudo apt-get install libpq-dev
pip install psycopg2
Настройки базы данных для PostgreSQL:
#myapp/settings/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myprojectDB',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
В старых версиях вы также можете использовать псевдоним django.db.backends.postgresql_psycopg2
.
При использовании Postresql у вас будет доступ к некоторым дополнительным функциям:
Modelfields:
ArrayField # A field for storing lists of data.
HStoreField # A field for storing mappings of strings to strings.
JSONField # A field for storing JSON encoded data.
IntegerRangeField # Stores a range of integers
BigIntegerRangeField # Stores a big range of integers
FloatRangeField # Stores a range of floating point values.
DateTimeRangeField # Stores a range of timestamps
SQLite
sqlite по умолчанию для Django. Он не должен использоваться в производстве, поскольку он обычно медленный.
#myapp/settings/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'db/development.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
},
}
арматура
Светильники являются исходными данными для базы данных. Самый простой способ, когда у вас есть уже существующие данные, это использовать команду dumpdata
./manage.py dumpdata > databasedump.json # full database
./manage.py dumpdata myapp > databasedump.json # only 1 app
./manage.py dumpdata myapp.mymodel > databasedump.json # only 1 model (table)
Это создаст json-файл, который можно импортировать снова, используя
./manage.py loaddata databasedump.json
При использовании loadddata
без указания файла, Django будет искать fixtures
папки в вашем приложении или в списке каталогов , предусмотренных в FIXTURE_DIRS
в настройках, и использовать его содержимое вместо этого.
/myapp
/fixtures
myfixtures.json
morefixtures.xml
Возможные форматы файлов: JSON, XML or YAML
Светильники Пример JSON:
[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
}
}
]
Светильники Пример YAML:
- model: myapp.person
pk: 1
fields:
first_name: John
last_name: Lennon
- model: myapp.person
pk: 2
fields:
first_name: Paul
last_name: McCartney
Пример XML XML:
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object pk="1" model="myapp.person">
<field type="CharField" name="first_name">John</field>
<field type="CharField" name="last_name">Lennon</field>
</object>
<object pk="2" model="myapp.person">
<field type="CharField" name="first_name">Paul</field>
<field type="CharField" name="last_name">McCartney</field>
</object>
</django-objects>
Двигатель Django Cassandra
- Установить pip:
$ pip install django-cassandra-engine
- Добавьте «Приступая к работе» в INSTALLED_APPS в файле settings.py:
INSTALLED_APPS = ['django_cassandra_engine']
- Установка Cange DATABASES Стандарт:
Standart
DATABASES = {
'default': {
'ENGINE': 'django_cassandra_engine',
'NAME': 'db',
'TEST_NAME': 'test_db',
'HOST': 'db1.example.com,db2.example.com',
'OPTIONS': {
'replication': {
'strategy_class': 'SimpleStrategy',
'replication_factor': 1
}
}
}
}
Cassandra создает нового пользователя cqlsh:
DATABASES = {
'default': {
'ENGINE': 'django_cassandra_engine',
'NAME': 'db',
'TEST_NAME': 'test_db',
'USER_NAME'='cassandradb',
'PASSWORD'= '123cassandra',
'HOST': 'db1.example.com,db2.example.com',
'OPTIONS': {
'replication': {
'strategy_class': 'SimpleStrategy',
'replication_factor': 1
}
}
}
}