0Pricing
FastAPI Backend Development Bootcamp · 강의

SQLAlchemy ORM 기초

SQLAlchemy의 객체 관계 매퍼(ORM)를 시작으로 데이터베이스 모델을 정의하고 데이터베이스와 상호작용하는 방법을 익힙니다.

SQLAlchemy ORM 기초은(는) CoddyKit의 무료 FastAPI Backend Development Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 FastAPI Backend Development Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. FastAPI Backend Development Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Bridging Code and Databases

Welcome to SQLAlchemy ORM! You'll learn how to connect your Python code to a database in a powerful, object-oriented way.

An Object Relational Mapper (ORM) is a tool that helps you interact with a database using objects from your programming language, instead of writing raw SQL.

  • It maps database tables to Python classes.
  • It maps database rows to Python objects.
  • It maps database columns to Python attributes.

This makes database operations feel more like working with regular Python objects.

Meet SQLAlchemy: Your ORM Tool

SQLAlchemy is a comprehensive and powerful ORM for Python. It provides a full suite of well-known persistence patterns for efficient and high-performing database access.

We'll focus on its ORM capabilities, which allow you to define your database structure (schema) using Python classes and interact with data using instances of those classes.

It supports many databases, including SQLite, PostgreSQL, MySQL, and more!

The Foundation: Declarative Base

To start defining our database models, we need a special base class. SQLAlchemy's Declarative Base provides this foundation.

It's essentially a factory that generates a base class which your ORM models will inherit from. This base class connects your Python classes to the underlying database tables.

Here's how you get it:

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

Defining Your First Model

Once you have your Base, you can define your database tables as Python classes. Each class will represent a table, and its attributes will represent the columns.

Let's create a simple User model. It will have an id and a name.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))

Model Attributes: Columns

In our User model, id and name are defined using Column objects. The Column function lets you specify details about each database column:

  • Data Type: Integer for whole numbers, String for text. SQLAlchemy has many more!
  • Primary Key: primary_key=True marks a column as the unique identifier for each row.
  • Length: String(50) sets a maximum length for text fields.
  • Nullable: By default, columns are nullable. You can set nullable=False to require a value.

The __tablename__ attribute is crucial; it tells SQLAlchemy the actual name of the table in your database.

Setting Up the Database Engine

Before we can create tables or interact with the database, SQLAlchemy needs to know where it is! This is where the Engine comes in.

An Engine is the starting point for any SQLAlchemy application. It connects your application to a specific database using a connection string.

For simplicity, we'll use an in-memory SQLite database, which is great for testing as it disappears when the program ends:

from sqlalchemy import create_engine

# Connect to an in-memory SQLite database
engine = create_engine('sqlite:///:memory:')

# For a file-based SQLite database:
# engine = create_engine('sqlite:///./test.db')

Creating Database Tables

With our Base, defined models, and engine, we can now create the actual database tables!

The Base.metadata.create_all(engine) method inspects all classes that inherit from Base and creates the corresponding tables in the database connected by the engine.

If the tables already exist, SQLAlchemy won't try to recreate them, preventing errors.

Full Example: Define & Create

Let's put it all together! Run this code to see how to define a model and create its table in an in-memory SQLite database.

Notice how we import everything needed, define Base, create our User model, set up the engine, and finally, create the tables.

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

# 1. Define the Base for ORM models
Base = declarative_base()

# 2. Define a Model (e.g., User table)
class User(Base):
    __tablename__ = 'users' # The actual table name in the database
    id = Column(Integer, primary_key=True) # Unique ID, automatically managed
    name = Column(String(50), nullable=False) # User's name, max 50 chars, required

    # A helpful representation for printing User objects
    def __repr__(self):
        return f"<User(id={self.id}, name='{self.name}')>"

# 3. Create a database engine
# Using an in-memory SQLite database for simplicity
engine = create_engine('sqlite:///:memory:')

# 4. Create all tables defined in Base
Base.metadata.create_all(engine)

print("Database tables created successfully!")
print("The 'users' table is now ready for data.")

Your Database Interaction Hub: The Session

Defining models and creating tables are just the first steps. To actually interact with the data (add, query, update, delete), you need a Session.

A Session is like a temporary workspace for your database operations. It holds all the objects you've loaded or created and keeps track of changes.

You create a Session using sessionmaker and bind it to your engine:

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

# (Assume 'engine' is already created as shown before)
engine = create_engine('sqlite:///:memory:')

# Create a Session factory
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# To get a session:
# db = SessionLocal()
# try:
#     # Perform operations with db
#     pass
# finally:
#     db.close()

Quick Check: Model Setup

You've learned how to set up the basics of SQLAlchemy ORM. Let's test your understanding of the core components.

Recap: SQLAlchemy ORM Basics

Great job! You've taken your first steps into the world of SQLAlchemy ORM.

Here's what we covered:

  • What is an ORM: Maps Python objects to database tables.
  • SQLAlchemy: A powerful Python ORM.
  • Declarative Base: The foundation (Base = declarative_base()) for your models.
  • Defining Models: Creating Python classes (like User) that inherit from Base.
  • Columns: Using Column with data types (Integer, String) and attributes (primary_key).
  • Engine: Connecting to your database (create_engine).
  • Table Creation: Bringing models to life in the database (Base.metadata.create_all(engine)).
  • Session: Your workspace for database interactions (sessionmaker).

Next, we'll learn how to add, query, update, and delete data using these concepts!

자주 묻는 질문

“SQLAlchemy ORM 기초” 강의는 무료인가요?

네 — “SQLAlchemy ORM 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 FastAPI Backend Development Bootcamp 강의 전체를 잠금 해제할 수 있습니다. FastAPI Backend Development Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“SQLAlchemy ORM 기초”에서 뭘 배우나요?

SQLAlchemy의 객체 관계 매퍼(ORM)를 시작으로 데이터베이스 모델을 정의하고 데이터베이스와 상호작용하는 방법을 익힙니다. 브라우저에서 직접 실행하는 실습 코드로 FastAPI Backend Development Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

FastAPI Backend Development Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 FastAPI Backend Development Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“SQLAlchemy ORM 기초” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 FastAPI Backend Development Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 FastAPI Backend Development Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SQLAlchemy ORM 기초
  2. FastAPI와 PostgreSQL 연결
  3. SQLAlchemy를 활용한 CRUD 작업
  4. Alembic을 활용한 데이터베이스 마이그레이션
← FastAPI Backend Development Bootcamp(으)로 돌아가기