Bird
Raised Fist0
Djangoframework~5 mins

Database configuration in Django - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the DATABASES setting in Django?
The DATABASES setting tells Django where and how to connect to your database. It includes details like the database engine, name, user, password, host, and port.
Click to reveal answer
beginner
Which key in the DATABASES dictionary specifies the type of database Django will use?
The ENGINE key specifies the database type, such as django.db.backends.sqlite3 for SQLite or django.db.backends.postgresql for PostgreSQL.
Click to reveal answer
intermediate
How do you configure Django to use a PostgreSQL database?
You set ENGINE to django.db.backends.postgresql, then provide NAME, USER, PASSWORD, HOST, and PORT in the DATABASES setting.
Click to reveal answer
beginner
Why is it important to keep database credentials secure in Django settings?
Because database credentials give access to your data. If exposed, someone could read, change, or delete your data. Use environment variables or secret managers to keep them safe.
Click to reveal answer
beginner
What happens if you don't configure the DATABASES setting in Django?
Django uses a default SQLite database named db.sqlite3 in your project folder. This is good for quick tests but not for production apps.
Click to reveal answer
Which setting key defines the database type in Django's DATABASES?
ANAME
BENGINE
CUSER
DHOST
What is the default database engine Django uses if none is configured?
AMySQL
BPostgreSQL
CSQLite
DOracle
Where should you ideally store sensitive database passwords in a Django project?
AIn static files
BDirectly in <code>settings.py</code>
CIn the database itself
DIn environment variables
Which of these is NOT a required key in a Django database configuration?
ATEMPLATE
BNAME
CENGINE
DPASSWORD
To connect Django to a PostgreSQL database, which ENGINE value should you use?
Adjango.db.backends.postgresql
Bdjango.db.backends.sqlite3
Cdjango.db.backends.oracle
Ddjango.db.backends.mysql
Explain how to set up the DATABASES setting in Django for a new project using SQLite.
Think about the simplest database Django uses by default.
You got /4 concepts.
    Describe best practices for managing database credentials securely in a Django project.
    Consider how to keep secrets safe from others.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the purpose of the ENGINE setting in Django's database configuration?
      easy
      A. To define the path to the database file
      B. To set the username for the database connection
      C. To specify the type of database Django should use
      D. To configure the database password

      Solution

      1. Step 1: Understand the role of ENGINE

        The ENGINE setting tells Django which database backend to use, like SQLite, PostgreSQL, or MySQL.
      2. Step 2: Differentiate from other settings

        Settings like NAME, USER, and PASSWORD handle connection details, not the database type.
      3. Final Answer:

        To specify the type of database Django should use -> Option C
      4. Quick Check:

        ENGINE = database type [OK]
      Hint: ENGINE always means database type, not credentials [OK]
      Common Mistakes:
      • Confusing ENGINE with NAME or USER
      • Thinking ENGINE sets username or password
      • Assuming ENGINE is a file path
      2. Which of the following is the correct way to configure a SQLite database in Django's settings.py?
      easy
      A. """DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb' } }"""
      B. """DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydb' } }"""
      C. """DATABASES = { 'default': { 'ENGINE': 'sqlite3', 'NAME': 'db.sqlite3' } }"""
      D. """DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3' } }"""

      Solution

      1. Step 1: Identify correct ENGINE for SQLite

        Django uses django.db.backends.sqlite3 as the ENGINE for SQLite databases.
      2. Step 2: Check the NAME setting for SQLite

        The NAME should be a path to the SQLite file, commonly BASE_DIR / 'db.sqlite3' using pathlib.
      3. Final Answer:

        DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3' } } -> Option D
      4. Quick Check:

        SQLite ENGINE = django.db.backends.sqlite3 [OK]
      Hint: SQLite uses django.db.backends.sqlite3 and file path NAME [OK]
      Common Mistakes:
      • Using 'sqlite3' instead of 'django.db.backends.sqlite3'
      • Confusing ENGINE with PostgreSQL or MySQL backends
      • Setting NAME as just a string without path
      3. Given this Django database configuration snippet, what database will Django connect to?
      DATABASES = {
        'default': {
          'ENGINE': 'django.db.backends.postgresql',
          'NAME': 'myproject',
          'USER': 'admin',
          'PASSWORD': 'secret',
          'HOST': 'localhost',
          'PORT': '5432',
        }
      }
      medium
      A. PostgreSQL database named 'myproject' on localhost
      B. MySQL database named 'myproject' on localhost
      C. SQLite database named 'myproject'
      D. No database connection due to missing ENGINE

      Solution

      1. Step 1: Check the ENGINE setting

        The ENGINE is set to django.db.backends.postgresql, which means Django will use PostgreSQL.
      2. Step 2: Identify database details

        The NAME is 'myproject', HOST is 'localhost', and PORT is '5432' which are typical PostgreSQL defaults.
      3. Final Answer:

        PostgreSQL database named 'myproject' on localhost -> Option A
      4. Quick Check:

        ENGINE = postgresql means PostgreSQL DB [OK]
      Hint: ENGINE shows database type; PostgreSQL means option C [OK]
      Common Mistakes:
      • Assuming SQLite because of 'myproject' name
      • Confusing PostgreSQL with MySQL
      • Ignoring HOST and PORT settings
      4. Identify the error in this Django database configuration:
      DATABASES = {
        'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'mydb',
          'USER': 'root',
          'PASSWORD': 'pass123',
          'HOST': '',
          'PORT': '',
        }
      }
      medium
      A. NAME must be a file path for MySQL
      B. Empty HOST and PORT cause connection failure
      C. PASSWORD cannot be empty string
      D. ENGINE should be 'django.db.backends.postgresql'

      Solution

      1. Step 1: Check HOST and PORT values

        HOST and PORT are empty strings, which can cause connection issues because MySQL expects valid host and port or defaults.
      2. Step 2: Understand default behavior

        Leaving HOST and PORT empty may work if MySQL uses defaults, but empty strings are not recommended and can cause errors.
      3. Final Answer:

        Empty HOST and PORT cause connection failure -> Option B
      4. Quick Check:

        HOST and PORT must be valid or omitted [OK]
      Hint: Empty strings for HOST/PORT can break MySQL connection [OK]
      Common Mistakes:
      • Thinking empty strings mean localhost defaults
      • Confusing ENGINE with PostgreSQL
      • Assuming PASSWORD must be non-empty always
      5. You want to configure Django to use PostgreSQL in production but SQLite in development. Which approach correctly handles this in settings.py?
      hard
      A. Use environment variables to switch ENGINE and NAME based on environment
      B. Set ENGINE to PostgreSQL always and change NAME for dev and prod
      C. Use SQLite ENGINE and change USER for production
      D. Configure both databases in DATABASES and Django picks automatically

      Solution

      1. Step 1: Understand environment-based configuration

        Using environment variables lets you switch database settings without changing code, ideal for dev vs prod.
      2. Step 2: Why other options fail

        Always setting PostgreSQL ENGINE won't work in dev without PostgreSQL installed; changing USER alone doesn't switch DB type; Django does not auto-pick between multiple databases without explicit routing.
      3. Final Answer:

        Use environment variables to switch ENGINE and NAME based on environment -> Option A
      4. Quick Check:

        Env vars enable flexible DB config [OK]
      Hint: Use env vars to switch DB settings per environment [OK]
      Common Mistakes:
      • Hardcoding production DB in dev settings
      • Assuming Django auto-selects DB from multiple configs
      • Changing USER does not switch database type
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard