Zoeken…


MySQL / MariaDB

Django ondersteunt MySQL 5.5 en hoger.

Zorg ervoor dat sommige pakketten zijn geïnstalleerd:

$ 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

Evenals een van de Python MySQL-stuurprogramma's ( mysqlclient de aanbevolen keuze voor Django):

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

De databasecodering kan niet door Django worden ingesteld, maar moet op databaseniveau worden geconfigureerd. Zoek naar default-character-set in my.cnf (of /etc/mysql/mariadb.conf/*.cnf ) en stel de codering in:

   [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

Databaseconfiguratie voor MySQL of 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',
    }
}

Als u de MySQL-connector van Oracle gebruikt, ziet uw ENGINE lijn er als volgt uit:

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

Let er bij het maken van een database op dat u de codering en sortering opgeeft:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

Vanaf MySQL 5.7 en bij nieuwe installaties van MySQL 5.6 bevat de standaardwaarde van de optie sql_mode STRICT_TRANS_TABLES . Die optie escaleert waarschuwingen tot fouten wanneer gegevens worden afgekapt bij het invoegen. Django beveelt ten zeerste aan om een strikte modus voor MySQL te activeren om gegevensverlies te voorkomen (STRICT_TRANS_TABLES of STRICT_ALL_TABLES). Toevoegen toevoegen aan /etc/my.cnf sql-mode = STRICT_TRANS_TABLES

PostgreSQL

Zorg ervoor dat sommige pakketten zijn geïnstalleerd:

sudo apt-get install libpq-dev
pip install psycopg2

Database-instellingen voor 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',
    }
}

In oudere versies kunt u ook de alias django.db.backends.postgresql_psycopg2 .

Wanneer u Postresql gebruikt, hebt u toegang tot enkele extra functies:

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 is de standaardwaarde voor Django. Het zou niet in productie moeten worden gebruikt aangezien het gewoonlijk langzaam is.

#myapp/settings/settings.py

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

Wedstrijden

Armaturen zijn initiële gegevens voor de database. De meest eenvoudige manier om reeds bestaande gegevens te gebruiken, is om de opdracht 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)

Hiermee maakt u een json-bestand dat opnieuw kan worden geïmporteerd met behulp van

./manage.py loaddata databasedump.json

Wanneer u de loadddata zonder een bestand op te geven, zoekt Django een map met fixtures in uw app of de lijst met mappen in de FIXTURE_DIRS in instellingen en gebruikt in plaats daarvan de inhoud.

/myapp
   /fixtures 
        myfixtures.json
        morefixtures.xml 

Mogelijke bestandsindelingen zijn: JSON, XML or YAML

Voorbeeld J 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"
    }
  }
]

YAML-voorbeeld:

- model: myapp.person
  pk: 1
  fields:
    first_name: John
    last_name: Lennon
- model: myapp.person
  pk: 2
  fields:
    first_name: Paul
    last_name: McCartney

Armaturen XML-voorbeeld:

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

  • Installeer pip: $ pip install django-cassandra-engine
  • Voeg Beginnen toe aan INSTALLED_APPS in je instellingen.py-bestand: INSTALLED_APPS = ['django_cassandra_engine']
  • Cange DATABASES instelling 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 maakt nieuwe gebruiker cqlsh aan:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow