Flask-SQLAlchemy is an extension for Flask that adds support for SQLAlchemy, a tool to work with databases easily using Python code instead of raw SQL.
Click to reveal answer
beginner
How do you initialize Flask-SQLAlchemy in a Flask app?
You first create a Flask app, then create a SQLAlchemy object passing the app or later call init_app(app) on it. Example: app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydb.sqlite3' db = SQLAlchemy(app)
Click to reveal answer
beginner
What configuration key sets the database URL in Flask-SQLAlchemy?
The key is SQLALCHEMY_DATABASE_URI. It tells Flask-SQLAlchemy where your database is and what type it is, like SQLite or PostgreSQL.
Click to reveal answer
beginner
Why do you call db.create_all() in Flask-SQLAlchemy?
Calling db.create_all() creates all the tables in the database based on your model classes. It sets up the database structure you defined.
Click to reveal answer
beginner
What is a model in Flask-SQLAlchemy?
A model is a Python class that represents a table in the database. Each attribute in the class is a column in the table.
Click to reveal answer
Which configuration key sets the database location in Flask-SQLAlchemy?
ASQLALCHEMY_DATABASE_URI
BDATABASE_URL
CSQLALCHEMY_URI
DDATABASE_PATH
✗ Incorrect
The correct key is SQLALCHEMY_DATABASE_URI to specify the database URL.
What does db.create_all() do in Flask-SQLAlchemy?
ADeletes all tables
BConnects to the database
CCreates tables based on models
DRuns a query
✗ Incorrect
db.create_all() creates tables in the database based on your model classes.
How do you link SQLAlchemy to your Flask app?
Adb = SQLAlchemy.init_app(app)
Bdb = SQLAlchemy() only
Capp = Flask() only
Ddb = SQLAlchemy(app)
✗ Incorrect
You create the SQLAlchemy object with the Flask app: db = SQLAlchemy(app).
What is a model in Flask-SQLAlchemy?
AA Python class representing a database table
BA database connection
CA SQL query
DA Flask route
✗ Incorrect
A model is a Python class that maps to a database table.
Which database type can you use with Flask-SQLAlchemy?
AOnly SQLite
BMultiple types like SQLite, MySQL, PostgreSQL
COnly MySQL
DOnly PostgreSQL
✗ Incorrect
Flask-SQLAlchemy supports many databases like SQLite, MySQL, and PostgreSQL.
Explain how to set up Flask-SQLAlchemy in a new Flask project.
Think about the steps from app creation to database tables.
You got /5 concepts.
Describe what a model is in Flask-SQLAlchemy and why it is important.
Models connect Python code to database tables.
You got /4 concepts.
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
Step 1: Understand Flask-SQLAlchemy role
Flask-SQLAlchemy is a tool that helps Flask apps talk to databases easily.
Step 2: Compare with other options
Options B, C, and D relate to other Flask features, not database connection.
Final Answer:
To connect the Flask app to a database and manage data easily -> Option B
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
Step 1: Recall initialization pattern
The simplest and most common way is to pass the app directly to SQLAlchemy constructor: db = SQLAlchemy(app).
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.
Final Answer:
db = SQLAlchemy(app) -> Option A
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
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.
Step 2: Check what user.name holds after commit
After committing, the user object still has the name 'Alice' stored in its attribute.
Final Answer:
Alice -> Option C
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
Step 1: Check app context usage
When using db.init_app(app), database operations must be inside app.app_context() to access app config.
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.
Final Answer:
Missing app.app_context() when adding and committing -> Option A
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
Step 1: Set correct PostgreSQL URI
The URI must start with 'postgresql://' and include user, password, host, and database name.
Step 2: Initialize SQLAlchemy properly
Using db = SQLAlchemy() then db.init_app(app) is a flexible pattern, especially for larger apps.
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.
Final Answer:
Set app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/dbname'; then db = SQLAlchemy(); db.init_app(app) -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.