Recherche…


MySQL / MariaDB

Django supporte MySQL 5.5 et supérieur.

Assurez-vous d'avoir quelques paquets installés:

$ 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

Ainsi que l'un des pilotes MySQL Python ( mysqlclient recommandé pour Django):

$ pip install mysqlclient    # python 2 and 3
$ pip install MySQL-python   # python 2
$ pip install pymysql        # python 2 and 3

L'encodage de la base de données ne peut pas être défini par Django, mais doit être configuré au niveau de la base de données. Recherchez le jeu de caractères par default-character-set dans my.cnf (ou /etc/mysql/mariadb.conf/*.cnf ) et définissez l'encodage:

   [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

Configuration de la base de données pour MySQL ou 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',
    }
}

Si vous utilisez le connecteur MySQL d'Oracle, votre ligne ENGINE doit ressembler à ceci:

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

Lorsque vous créez une base de données, assurez-vous que pour spécifier l'encodage et le classement:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

Depuis MySQL 5.7 et les nouvelles installations de MySQL 5.6, la valeur par défaut de l'option sql_mode contient STRICT_TRANS_TABLES . Cette option escalade les avertissements en erreurs lorsque les données sont tronquées lors de l'insertion. Django recommande vivement d'activer un mode strict pour MySQL afin d'éviter toute perte de données (STRICT_TRANS_TABLES ou STRICT_ALL_TABLES). Pour activer ajouter à /etc/my.cnf sql-mode = STRICT_TRANS_TABLES

PostgreSQL

Assurez-vous d'avoir quelques paquets installés:

sudo apt-get install libpq-dev
pip install psycopg2

Paramètres de base de données pour 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',
    }
}

Dans les anciennes versions, vous pouvez également utiliser l'alias django.db.backends.postgresql_psycopg2 .

Lorsque vous utilisez Postresql, vous aurez accès à certaines fonctionnalités supplémentaires:

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 est la valeur par défaut pour Django. Il ne doit pas être utilisé en production car il est généralement lent.

#myapp/settings/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'db/development.sqlite3',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    },
}

Agencements

Les fixations sont des données initiales pour la base de données. Lorsque vous avez déjà des données existantes, la méthode la plus simple consiste à utiliser la commande 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)

Cela créera un fichier json qui pourra être réimporté en utilisant

./manage.py loaddata databasedump.json

Lorsque vous utilisez le loadddata sans spécifier de fichier, Django recherchera un dossier de fixtures dans votre application ou la liste des répertoires fournis dans les paramètres FIXTURE_DIRS , et utilisera son contenu à la place.

/myapp
   /fixtures 
        myfixtures.json
        morefixtures.xml 

Les formats de fichiers possibles sont: JSON, XML or YAML

Exemple de JSON de luminaires:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]

Exemple de montage 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

Exemple XML de luminaires:

<?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>

Moteur Django Cassandra

  • Installez pip: $ pip install django-cassandra-engine
  • Ajoutez Getting Started à INSTALLED_APPS dans votre fichier settings.py: INSTALLED_APPS = ['django_cassandra_engine']
  • Réglage de Cange DATABASES Standart:

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 crée un nouvel utilisateur 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
        }
    }
}

}



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow