A model in Flask represents the structure of data in your application. It defines how data is stored, accessed, and related, usually using classes that map to database tables.
Click to reveal answer
beginner
Which Flask extension is commonly used for defining models?
Flask-SQLAlchemy is the common extension used to define models. It provides tools to create classes that represent database tables and manage database operations easily.
Click to reveal answer
beginner
What does this code snippet define?
<pre>class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)</pre>
This defines a User model with two fields: 'id' as a unique identifier (primary key) and 'name' as a required text field with a maximum length of 50 characters.
Click to reveal answer
beginner
Why do we use 'primary_key=True' in a model field?
Setting 'primary_key=True' marks that field as the unique identifier for each record in the database table. It helps to find, update, or delete specific records easily.
Click to reveal answer
beginner
What does 'nullable=False' mean in a model field?
'nullable=False' means that the field cannot be empty. The database will require a value for this field when creating or updating a record.
Click to reveal answer
In Flask-SQLAlchemy, what does 'db.Model' represent?
AA base class for all models representing database tables
BA function to run database queries
CA template for HTML pages
DA tool to handle user sessions
✗ Incorrect
'db.Model' is the base class that all model classes inherit from to represent database tables.
Which of these is a valid field type in Flask-SQLAlchemy models?
Adb.TextField
Bdb.Integer
Cdb.FloatField
Ddb.StringField
✗ Incorrect
'db.Integer' is a valid field type. The correct string type is 'db.String', not 'db.StringField'.
What happens if you omit 'primary_key=True' in a model?
AThe model will automatically create a primary key
BThe database will reject the model
CThe model will not have a unique identifier for records
DThe model will work normally without any issues
✗ Incorrect
Without a primary key, the model lacks a unique identifier, which is essential for database operations.
What does 'db.Column(db.String(100), nullable=True)' mean?
AA text field up to 100 characters that can be empty
BA required text field up to 100 characters
CA number field with max 100
DA boolean field
✗ Incorrect
'nullable=True' means the field can be empty, and 'db.String(100)' limits text length to 100 characters.
How do you define a model named 'Product' with an integer 'id' primary key in Flask-SQLAlchemy?
Aclass Product():\n id = db.Integer()
Bdef Product():\n id = db.Integer(primary_key=True)
Cclass Product(db.Model):\n id = db.Integer()
Dclass Product(db.Model):\n id = db.Column(db.Integer, primary_key=True)
✗ Incorrect
Models inherit from 'db.Model' and define fields with 'db.Column'. The 'id' field needs 'primary_key=True'.
Explain how to define a simple model in Flask using Flask-SQLAlchemy.
Think about how a class maps to a database table and fields map to columns.
You got /5 concepts.
Describe the role of 'primary_key' and 'nullable' in model field definitions.
Consider how databases identify records and enforce data rules.
You got /3 concepts.
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
Step 1: Understand what a model represents
A model in Flask defines how data is stored and structured in the database.
Step 2: Identify the role of models in the app
Models help manage data easily by mapping Python classes to database tables.
Final Answer:
To represent and manage data structure in the database -> Option A
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
Step 1: Check class definition syntax
Model classes inherit from db.Model in Flask-SQLAlchemy.
Step 2: Verify column definition
Columns use db.Column with type and primary key flag.
Final Answer:
class User(db.Model):\n id = db.Column(db.Integer, primary_key=True) -> Option D
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
Step 1: Understand model instance creation
Creating p = Product(id=1, name='Book') sets attributes directly.
Step 2: Check what print(p.name) outputs
It prints the name attribute value, which is 'Book'.
Final Answer:
Book -> Option C
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
Step 1: Check db.String usage
db.String requires a length argument like db.String(100).
Step 2: Verify other parts
Primary key can be on any column; __tablename__ is optional; columns are defined directly.
Final Answer:
db.String requires a length argument -> Option A
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
Step 1: Understand composite primary keys
Composite keys require defining multiple columns as primary keys together.
Step 2: Check Flask-SQLAlchemy syntax for composite keys
Use __table_args__ with db.PrimaryKeyConstraint listing columns.
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
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 unknownstrongwhile earning +1 Grip toward your certificate.