Bird
Raised Fist0
Flaskframework~5 mins

Flask-SQLAlchemy setup - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Flask-SQLAlchemy?
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
What does db.create_all() do in Flask-SQLAlchemy?
ADeletes all tables
BConnects to the database
CCreates tables based on models
DRuns a query
How do you link SQLAlchemy to your Flask app?
Adb = SQLAlchemy.init_app(app)
Bdb = SQLAlchemy() only
Capp = Flask() only
Ddb = 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
Which database type can you use with Flask-SQLAlchemy?
AOnly SQLite
BMultiple types like SQLite, MySQL, PostgreSQL
COnly MySQL
DOnly 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

      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