0
0
Flaskframework~20 mins

Flask-SQLAlchemy setup - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Flask-SQLAlchemy Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this Flask-SQLAlchemy model query?

Given this Flask app and model setup, what will User.query.count() return after adding two users and committing?

Flask
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

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

db = SQLAlchemy(app)

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

with app.app_context():
    db.create_all()
    user1 = User(name='Alice')
    user2 = User(name='Bob')
    db.session.add(user1)
    db.session.add(user2)
    db.session.commit()
    count = User.query.count()
A2
B0
C1
DRaises an error because of missing app context
Attempts:
2 left
💡 Hint

Remember that db.create_all() and queries require the app context.

📝 Syntax
intermediate
2:00remaining
Which option correctly initializes Flask-SQLAlchemy with an app factory?

Choose the correct way to set up Flask-SQLAlchemy when using an app factory pattern.

Flask
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
    # Initialize db here
    return app
Adb.init_app(app) inside create_app before return
Bdb = SQLAlchemy(app) inside create_app
Cdb.create_all() inside create_app before return
Dapp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' after return
Attempts:
2 left
💡 Hint

When using app factory, you create the db object outside and initialize it inside.

🔧 Debug
advanced
2:00remaining
Why does this Flask-SQLAlchemy code raise an error?

What error does this code raise and why?

Flask
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

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

db = SQLAlchemy(app)

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

product = Product(name='Book')
db.session.add(product)
db.session.commit()
ARaises AttributeError: 'Product' object has no attribute 'name'
BRaises IntegrityError due to missing primary key
CRaises RuntimeError: Working outside of application context
DNo error, commits successfully
Attempts:
2 left
💡 Hint

Check if the code runs inside the Flask app context.

state_output
advanced
2:00remaining
What is the value of user.email after this code runs?

Consider this Flask-SQLAlchemy model and code snippet. What will user.email be?

Flask
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

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

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=True)

with app.app_context():
    db.create_all()
    user = User(username='john')
    db.session.add(user)
    db.session.commit()
    user = User.query.first()
ARaises AttributeError
BNone
CEmpty string ''
D'john@example.com'
Attempts:
2 left
💡 Hint

Check the default value of email when not set.

🧠 Conceptual
expert
2:00remaining
Which statement best describes Flask-SQLAlchemy's session behavior?

Choose the most accurate description of how Flask-SQLAlchemy manages database sessions.

AIt shares a single global session object across all threads without isolation.
BIt creates a new session for each query and closes it immediately after.
CIt requires manual session creation and closing for every database operation.
DIt uses a scoped session tied to the Flask app context to handle concurrent requests safely.
Attempts:
2 left
💡 Hint

Think about how Flask handles multiple requests and how SQLAlchemy sessions should behave.