개요
2025.06.20-[Python] SQLAlchemy - SQL 표현 언어와 메타데이터에서 SQLAlchemy로 데이터베이스 테이블을 다루는 방법을 알아보았는데, 이번 글에서는 테이블에 데이터를 추가하는 방법을 적어둔다.
Insert
SQL INSERT문은 insert() 함수를 사용해 생성한다. insert() 함수는 SQL에서의 INSERT문을 나타내는 새로운 insert 객체를 생성해 테이블에 새로운 데이터를 추가한다.
insert() 함수는 아래와 같이 매개변수로 데이터를 추가할 테이블을 지정하고 values 속성으로 컬럼과 값을 지정하면 된다.
insert(TABLE_NAME).values(COLUMN_NAME=VALUE, COLUMN_NAME=VALUE)
아래 예시는 user_account라는 테이블에 데이터를 추가하는 예시이다.
from sqlalchemy import MetaData
from sqlalchemy import Table, Column, Integer, String
from sqlalchemy import create_engine
from sqlalchemy import insert
# 메타데이터 객체 선언
metadata_obj = MetaData()
# 테이블 객체 선언
user_table = Table(
"user_account",
metadata_obj,
Column("id", Integer, primary_key=True, autoincrement=True),
Column("name", String(30)),
Column("fullname", String),
)
# INSERT문 생성
stmt = insert(user_table).values(name="spongebob", fullname="Spongebob Squarepants")
# INSERT 정보 확인
compiled = stmt.compile()
print(compiled)
print(compiled.params)
compile() 함수로 생성한 Insert 문을 확인하면 위와 같다.
생성한 insert는 아래와 같이 실행할 수 있다.
engine = create_engine('sqlite:///:memory:', echo=True, future=True)
with engine.connect() as conn:
conn.execute(stmt)
conn.commit()
참고로 insert() 함수는 테이블에 추가할 컬럼을 명시적으로 지정하지 않으면 모든 속성에 대해서 자동으로 SQL을 생성하며,
print(insert(user_table))
execute() 함수에 추가할 데이터를 리스트로 전달하면 테이블에 여러 개의 엔트리를 한 번에 추가할 수 있다.
engine = create_engine('sqlite:///:memory:', echo=True, future=True)
with engine.connect() as conn:
conn.execute(insert(user_table), [
{"name": "sandy", "fullname": "Sandy Cheeks"},
{"name": "patrick", "fullname": "Patrick Star"},
])
conn.commit()
참고 문서
https://docs.sqlalchemy.org/en/20/tutorial/data_insert.html
728x90