Skip to content

Primary Keys and Column Types

Primary keys

A primary key uniquely identifies a row.

Most tables use an auto-incrementing integer idid:

id = db.Column(db.Integer, primary_key=True)
id = db.Column(db.Integer, primary_key=True)

Common column types

  • db.Integerdb.Integer
  • db.String(length)db.String(length)
  • db.Textdb.Text
  • db.Booleandb.Boolean
  • db.DateTimedb.DateTime
  • db.Floatdb.Float
  • db.Numericdb.Numeric

Example:

created_at = db.Column(db.DateTime, nullable=False)
created_at = db.Column(db.DateTime, nullable=False)

Constraints

  • nullable=Falsenullable=False (required)
  • unique=Trueunique=True (unique constraint)
  • index=Trueindex=True (create an index for faster lookups)

Example:

email = db.Column(db.String(120), unique=True, index=True, nullable=False)
email = db.Column(db.String(120), unique=True, index=True, nullable=False)

Defaults

You can set default values:

is_active = db.Column(db.Boolean, default=True, nullable=False)
is_active = db.Column(db.Boolean, default=True, nullable=False)

For timestamps, you typically use a callable (not a fixed time):

import datetime
created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
import datetime
created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)

Foreign keys (preview)

Relationships depend on foreign keys:

user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)

We’ll build relationships later in this phase.

If this helped you, consider buying me a coffee ☕

Buy me a coffee

Was this page helpful?

Let us know how we did