Bird
Raised Fist0
Flaskframework~10 mins

Flask-SQLAlchemy setup - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the SQLAlchemy class from flask_sqlalchemy.

Flask
from flask_sqlalchemy import [1]
Drag options to blanks, or click blank then click option'
Acreate_app
BFlask
CSQLAlchemy
Ddb
Attempts:
3 left
💡 Hint
Common Mistakes
Importing Flask instead of SQLAlchemy.
Using 'db' which is usually the instance name, not the class.
Trying to import create_app which is unrelated here.
2fill in blank
medium

Complete the code to create a Flask app instance.

Flask
app = [1](__name__)
Drag options to blanks, or click blank then click option'
AFlask
BSQLAlchemy
Ccreate_app
Dapp
Attempts:
3 left
💡 Hint
Common Mistakes
Using SQLAlchemy instead of Flask to create the app.
Calling create_app which is a pattern but not the class itself.
Assigning app to itself.
3fill in blank
hard

Fix the error in the code to initialize the SQLAlchemy object with the Flask app.

Flask
db = SQLAlchemy([1])
Drag options to blanks, or click blank then click option'
Aapp
BSQLAlchemy
CFlask
DNone
Attempts:
3 left
💡 Hint
Common Mistakes
Passing the class SQLAlchemy instead of the app instance.
Passing Flask class instead of the app instance.
Passing None which causes errors.
4fill in blank
hard

Fill both blanks to configure the database URI and enable track modifications.

Flask
app.config['SQLALCHEMY_DATABASE_URI'] = [1]
app.config[[2]] = False
Drag options to blanks, or click blank then click option'
A'sqlite:///test.db'
B'SQLALCHEMY_TRACK_MODIFICATIONS'
C'SQLALCHEMY_ECHO'
DTrue
Attempts:
3 left
💡 Hint
Common Mistakes
Using True instead of False for track modifications.
Using wrong config keys like 'SQLALCHEMY_ECHO'.
Wrong URI format.
5fill in blank
hard

Fill all three blanks to define a simple User model with id, username, and email fields.

Flask
class User(db.Model):
    id = db.Column(db.Integer, primary_key=[1])
    username = db.Column(db.String(80), unique=[2], nullable=False)
    email = db.Column(db.String(120), unique=[3], nullable=False)
Drag options to blanks, or click blank then click option'
ATrue
BFalse
CNone
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Setting primary_key to False or None.
Not setting unique to True for username or email.
Using 0 instead of True or False.

Practice

(1/5)
1. What is the main purpose of Flask-SQLAlchemy in a Flask application?
easy
A. To create HTML templates for the Flask app
B. To connect the Flask app to a database and manage data easily
C. To handle user authentication and sessions
D. To serve static files like images and CSS

Solution

  1. Step 1: Understand Flask-SQLAlchemy role

    Flask-SQLAlchemy is a tool that helps Flask apps talk to databases easily.
  2. Step 2: Compare with other options

    Options B, C, and D relate to other Flask features, not database connection.
  3. Final Answer:

    To connect the Flask app to a database and manage data easily -> Option B
  4. Quick Check:

    Flask-SQLAlchemy = database connection [OK]
Hint: Flask-SQLAlchemy is about databases, not templates or files [OK]
Common Mistakes:
  • Confusing Flask-SQLAlchemy with template engines
  • Thinking it manages user sessions
  • Assuming it serves static files
2. Which of the following is the correct way to initialize Flask-SQLAlchemy in your Flask app?
easy
A. db = SQLAlchemy(app)
B. db = SQLAlchemy() db.init_app(appp)
C. db = SQLAlchemy(appp)
D. db = SQLAlchemy(app=Flask())

Solution

  1. Step 1: Recall initialization pattern

    The simplest and most common way is to pass the app directly to SQLAlchemy constructor: db = SQLAlchemy(app).
  2. Step 2: Check other options

    db = SQLAlchemy() db.init_app(appp) uses undefined 'appp'. db = SQLAlchemy(appp) uses undefined 'appp'. db = SQLAlchemy(app=Flask()) creates a new Flask app, not the existing one.
  3. Final Answer:

    db = SQLAlchemy(app) -> Option A
  4. Quick Check:

    Direct app in constructor = db = SQLAlchemy(app) [OK]
Hint: Pass your Flask app directly to SQLAlchemy() for quick setup [OK]
Common Mistakes:
  • Trying to pass app as a keyword argument incorrectly
  • Creating a new Flask app inside SQLAlchemy
  • Forgetting to link SQLAlchemy to the app
3. Given this Flask-SQLAlchemy model and code, what will print(user.name) output?
from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

with app.app_context():
    db.create_all()
    user = User(name='Alice')
    db.session.add(user)
    db.session.commit()

print(user.name)
medium
A. Empty string
B. None
C. Alice
D. Error: No such attribute

Solution

  1. Step 1: Understand model and data insertion

    The User model has a name field. We create a user with name 'Alice' and add it to the database.
  2. Step 2: Check what user.name holds after commit

    After committing, the user object still has the name 'Alice' stored in its attribute.
  3. Final Answer:

    Alice -> Option C
  4. Quick Check:

    User.name after commit = 'Alice' [OK]
Hint: Committed model instances keep their attribute values accessible [OK]
Common Mistakes:
  • Assuming user.name becomes None after commit
  • Thinking print causes a database query error
  • Confusing model attribute with database column name
4. What is wrong with this Flask-SQLAlchemy setup code?
from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy()
db.init_app(app)

class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))

product = Product(name='Book')
db.session.add(product)
db.session.commit()
medium
A. Missing app.app_context() when adding and committing
B. SQLALCHEMY_DATABASE_URI is incorrect
C. Product model lacks a __tablename__ attribute
D. db = SQLAlchemy() should be db = SQLAlchemy(app)

Solution

  1. Step 1: Check app context usage

    When using db.init_app(app), database operations must be inside app.app_context() to access app config.
  2. Step 2: Verify other parts

    The URI is valid, __tablename__ is optional, and db = SQLAlchemy() with init_app is valid. The missing app context causes runtime error.
  3. Final Answer:

    Missing app.app_context() when adding and committing -> Option A
  4. Quick Check:

    Database ops need app context [OK]
Hint: Wrap DB actions in app.app_context() if using init_app() [OK]
Common Mistakes:
  • Ignoring app context requirement with init_app()
  • Thinking __tablename__ is always required
  • Confusing init_app() with passing app in constructor
5. You want to create a Flask app with Flask-SQLAlchemy that uses PostgreSQL. Which steps correctly set up the database URI and initialize the app and database? Choose the correct sequence.
hard
A. Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(appp)
B. Set app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'; then db = SQLAlchemy(app)
C. Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(); no init_app call
D. Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(); db.init_app(app)

Solution

  1. Step 1: Set correct PostgreSQL URI

    The URI must start with 'postgresql://' and include user, password, host, and database name.
  2. Step 2: Initialize SQLAlchemy properly

    Using db = SQLAlchemy() then db.init_app(app) is a flexible pattern, especially for larger apps.
  3. Step 3: Check other options

    Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(appp) uses undefined 'appp'; Set app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'; then db = SQLAlchemy(app) uses SQLite, not PostgreSQL; Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(); no init_app call misses init_app call, so db won't link to app.
  4. Final Answer:

    Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(); db.init_app(app) -> Option D
  5. Quick Check:

    PostgreSQL URI + init_app() = Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(); db.init_app(app) [OK]
Hint: Use init_app() with PostgreSQL URI for flexible setup [OK]
Common Mistakes:
  • Using SQLite URI when PostgreSQL is needed
  • Forgetting to call init_app() after creating db without app
  • Passing app to SQLAlchemy but using wrong URI format
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