Bird
Raised Fist0
Flaskframework~10 mins

Model definition in Flask - 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 SQLAlchemy from flask_sqlalchemy.

Flask
from flask_sqlalchemy import [1]
Drag options to blanks, or click blank then click option'
AModel
BFlask
CSQLAlchemy
DBase
Attempts:
3 left
💡 Hint
Common Mistakes
Importing 'Model' directly instead of 'SQLAlchemy'.
Using 'Flask' which is unrelated to models.
Trying to import 'Base' which is not from flask_sqlalchemy.
2fill in blank
medium

Complete the code to define a model class named User inheriting from the base model.

Flask
class User([1]):
Drag options to blanks, or click blank then click option'
Adb.Model
BBase
CModel
Dobject
Attempts:
3 left
💡 Hint
Common Mistakes
Inheriting from 'object' which is a plain Python class.
Using 'Base' which is from SQLAlchemy core, not Flask-SQLAlchemy.
Using 'Model' without prefix which causes NameError.
3fill in blank
hard

Fix the error in the model field definition to create an integer primary key named id.

Flask
id = db.Column([1], primary_key=True)
Drag options to blanks, or click blank then click option'
Adb.Integer
Bdb.Float
Cdb.Boolean
Ddb.String(50)
Attempts:
3 left
💡 Hint
Common Mistakes
Using String type for primary key which is uncommon here.
Using Boolean or Float which are not suitable for primary keys.
4fill in blank
hard

Fill both blanks to define a username column that is a string of max length 80 and must be unique.

Flask
username = db.Column([1](80), [2]=True)
Drag options to blanks, or click blank then click option'
Adb.String
Bunique
Cnullable
Ddb.Integer
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'nullable' instead of 'unique' for uniqueness.
Using 'Integer' instead of 'String' for username.
5fill in blank
hard

Fill all three blanks to define an email column that is a string of max length 120, unique, and cannot be null.

Flask
email = db.Column([1](120), [2]=True, [3]=False)
Drag options to blanks, or click blank then click option'
Adb.Integer
Bunique
Cnullable
Ddb.String
Attempts:
3 left
💡 Hint
Common Mistakes
Setting nullable=True which allows empty emails.
Using Integer type for email which is incorrect.

Practice

(1/5)
1. What is the main purpose of defining a model in a Flask application?
easy
A. To represent and manage data structure in the database
B. To create the user interface layout
C. To handle HTTP requests and responses
D. To style the web pages with CSS

Solution

  1. Step 1: Understand what a model represents

    A model in Flask defines how data is stored and structured in the database.
  2. Step 2: Identify the role of models in the app

    Models help manage data easily by mapping Python classes to database tables.
  3. Final Answer:

    To represent and manage data structure in the database -> Option A
  4. Quick Check:

    Model = Data structure representation [OK]
Hint: Models map classes to database tables for data storage [OK]
Common Mistakes:
  • Confusing models with UI components
  • Thinking models handle HTTP requests
  • Mixing models with styling or CSS
2. Which of the following is the correct way to define a model class named User with an integer primary key id in Flask-SQLAlchemy?
easy
A. class User():\n id = Column(Integer, primary_key=True)
B. class User(db.Model):\n id = Column(Integer)
C. def User(db.Model):\n id = db.Column(db.Integer, primary_key=True)
D. class User(db.Model):\n id = db.Column(db.Integer, primary_key=True)

Solution

  1. Step 1: Check class definition syntax

    Model classes inherit from db.Model in Flask-SQLAlchemy.
  2. Step 2: Verify column definition

    Columns use db.Column with type and primary key flag.
  3. Final Answer:

    class User(db.Model):\n id = db.Column(db.Integer, primary_key=True) -> Option D
  4. Quick Check:

    Model class inherits db.Model and uses db.Column [OK]
Hint: Model classes inherit db.Model; columns use db.Column [OK]
Common Mistakes:
  • Forgetting to inherit from db.Model
  • Using Column without db prefix
  • Defining model as a function instead of class
3. Given this model definition:
class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

p = Product(id=1, name='Book')
print(p.name)

What will be the output?
medium
A. Product object
B. 1
C. Book
D. Error: missing __init__ method

Solution

  1. Step 1: Understand model instance creation

    Creating p = Product(id=1, name='Book') sets attributes directly.
  2. Step 2: Check what print(p.name) outputs

    It prints the name attribute value, which is 'Book'.
  3. Final Answer:

    Book -> Option C
  4. Quick Check:

    Accessing attribute prints its value [OK]
Hint: Instance attributes print their assigned values [OK]
Common Mistakes:
  • Assuming print shows object type
  • Expecting error due to no explicit __init__
  • Confusing id and name values
4. What is wrong with this model definition?
class Employee(db.Model):
    id = db.Column(db.Integer)
    name = db.Column(db.String, primary_key=True)
medium
A. db.String requires a length argument
B. Columns must be defined inside a method, not directly
C. Model class must have a __tablename__ attribute
D. Primary key should be on the id column, not name

Solution

  1. Step 1: Check db.String usage

    db.String requires a length argument like db.String(100).
  2. Step 2: Verify other parts

    Primary key can be on any column; __tablename__ is optional; columns are defined directly.
  3. Final Answer:

    db.String requires a length argument -> Option A
  4. Quick Check:

    db.String must have length [OK]
Hint: Always specify length in db.String(length) [OK]
Common Mistakes:
  • Assuming primary key must be id
  • Thinking __tablename__ is mandatory
  • Defining columns inside methods
5. You want to define a model Order with a composite primary key consisting of order_id (integer) and product_id (integer). Which is the correct way to define this in Flask-SQLAlchemy?
hard
A. class Order(db.Model):\n order_id = db.Column(db.Integer, primary_key=True)\n product_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
B. class Order(db.Model):\n order_id = db.Column(db.Integer)\n product_id = db.Column(db.Integer)\n __table_args__ = (db.PrimaryKeyConstraint('order_id', 'product_id'),)
C. class Order(db.Model):\n order_id = db.Column(db.Integer, primary_key=True)\n product_id = db.Column(db.Integer)
D. class Order(db.Model):\n order_id = db.Column(db.Integer)\n product_id = db.Column(db.Integer)

Solution

  1. Step 1: Understand composite primary keys

    Composite keys require defining multiple columns as primary keys together.
  2. Step 2: Check Flask-SQLAlchemy syntax for composite keys

    Use __table_args__ with db.PrimaryKeyConstraint listing columns.
  3. Final Answer:

    class Order(db.Model):\n order_id = db.Column(db.Integer)\n product_id = db.Column(db.Integer)\n __table_args__ = (db.PrimaryKeyConstraint('order_id', 'product_id'),) -> Option B
  4. Quick Check:

    Composite keys use __table_args__ with PrimaryKeyConstraint [OK]
Hint: Use __table_args__ with PrimaryKeyConstraint for composite keys [OK]
Common Mistakes:
  • Setting primary_key=True on multiple columns separately
  • Not using __table_args__ for composite keys
  • Defining only one column as primary key
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