Buscar..


MySQL / MariaDB

Django soporta MySQL 5.5 y superior.

Asegúrese de tener algunos paquetes instalados:

$ 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

Además de uno de los controladores MySQL de Python ( mysqlclient la opción recomendada para Django):

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

La codificación de la base de datos no puede ser configurada por Django, pero debe configurarse en el nivel de la base de datos. Busque el default-character-set en my.cnf (o /etc/mysql/mariadb.conf/*.cnf ) y configure la codificación:

   [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

Configuración de la base de datos para MySQL o 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 está utilizando el conector MySQL de Oracle, su línea ENGINE debería tener este aspecto:

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

Cuando cree una base de datos, asegúrese de que para especificar la codificación y la intercalación:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

Desde MySQL 5.7 en adelante y en nuevas instalaciones de MySQL 5.6, el valor predeterminado de la opción sql_mode contiene STRICT_TRANS_TABLES . Esa opción convierte las advertencias en errores cuando los datos se truncan al insertarlos. Django recomienda encarecidamente la activación de un modo estricto para MySQL para evitar la pérdida de datos (STRICT_TRANS_TABLES o STRICT_ALL_TABLES). Para habilitar agregar a /etc/my.cnf sql-mode = STRICT_TRANS_TABLES

PostgreSQL

Asegúrese de tener algunos paquetes instalados:

sudo apt-get install libpq-dev
pip install psycopg2

Configuraciones de la base de datos para 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',
    }
}

En versiones anteriores también puede usar el alias django.db.backends.postgresql_psycopg2 .

Cuando uses Postresql tendrás acceso a algunas características adicionales:

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 es el predeterminado para Django. No debe utilizarse en producción ya que suele ser lento.

#myapp/settings/settings.py

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

Accesorios

Los accesorios son datos iniciales para la base de datos. La forma más sencilla cuando ya tiene algunos datos existentes es usar el comando 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)

Esto creará un archivo json que puede ser importado nuevamente usando

./manage.py loaddata databasedump.json

Al usar el loadddata sin especificar un archivo, Django buscará una carpeta de fixtures en su aplicación o la lista de directorios provista en FIXTURE_DIRS en la configuración, y usará su contenido en su lugar.

/myapp
   /fixtures 
        myfixtures.json
        morefixtures.xml 

Los posibles formatos de archivo son: JSON, XML or YAML

Ejemplo de JSON de fixtures:

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

Ejemplo de 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

Ejemplo XML de accesorios:

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

Motor Django Cassandra

  • Instala pip: $ pip install django-cassandra-engine
  • Agregue Getting Started to INSTALLED_APPS en su archivo settings.py: INSTALLED_APPS = ['django_cassandra_engine']
  • Configuración de BASES DE DATOS Cange 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 crea nuevo usuario 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow