SQLAlchemy에서 SELECT * 사용하기
SQLAlchemy에서 SELECT * 사용하기
기본 사용법
다음 코드는 users
테이블의 모든 데이터를 선택하는 쿼리를 생성합니다.
from sqlalchemy import create_engine, select
engine = create_engine("sqlite:///database.sqlite")
with engine.connect() as connection:
statement = select("*").from_table("users")
result = connection.execute(statement)
for row in result:
print(row)
결과:
(1, 'John Doe', '[email protected]')
(2, 'Jane Doe', '[email protected]')
특정 열 선택
SELECT *
대신 특정 열을 선택하려면 columns()
함수를 사용하십시오.
from sqlalchemy import create_engine, select
engine = create_engine("sqlite:///database.sqlite")
with engine.connect() as connection:
statement = select(columns("id", "name")).from_table("users")
result = connection.execute(statement)
for row in result:
print(row)
(1, 'John Doe')
(2, 'Jane Doe')
조건 추가
WHERE 절을 사용하여 쿼리에 조건을 추가할 수 있습니다.
from sqlalchemy import create_engine, select
engine = create_engine("sqlite:///database.sqlite")
with engine.connect() as connection:
statement = select("*").from_table("users").where(users.name == "John Doe")
result = connection.execute(statement)
for row in result:
print(row)
(1, 'John Doe', '[email protected]')
정렬
ORDER BY 절을 사용하여 결과를 정렬할 수 있습니다.
from sqlalchemy import create_engine, select
engine = create_engine("sqlite:///database.sqlite")
with engine.connect() as connection:
statement = select("*").from_table("users").order_by(users.name)
result = connection.execute(statement)
for row in result:
print(row)
(2, 'Jane Doe', '[email protected]')
(1, 'John Doe', '[email protected]')
더 알아보기
SQLAlchemy 예제 코드
데이터베이스 연결하기
from sqlalchemy import create_engine
engine = create_engine("sqlite:///database.sqlite")
테이블 생성하기
from sqlalchemy import create_engine, Table, Column, Integer, String
engine = create_engine("sqlite:///database.sqlite")
metadata = MetaData()
users = Table(
"users",
metadata,
Column("id", Integer, primary_key=True),
Column("name", String(255)),
Column("email", String(255)),
)
metadata.create_all(engine)
데이터 삽입하기
from sqlalchemy import create_engine, Table, Column, Integer, String, insert
engine = create_engine("sqlite:///database.sqlite")
users = Table(
"users",
metadata,
Column("id", Integer, primary_key=True),
Column("name", String(255)),
Column("email", String(255)),
)
with engine.connect() as connection:
statement = insert(users).values(name="John Doe", email="[email protected]")
connection.execute(statement)
데이터 읽기
from sqlalchemy import create_engine, select
engine = create_engine("sqlite:///database.sqlite")
with engine.connect() as connection:
statement = select("*").from_table("users")
result = connection.execute(statement)
for row in result:
print(row)
데이터 업데이트하기
from sqlalchemy import create_engine, update
engine = create_engine("sqlite:///database.sqlite")
with engine.connect() as connection:
statement = update(users).where(users.id == 1).values(name="Jane Doe")
connection.execute(statement)
from sqlalchemy import create_engine, delete
engine = create_engine("sqlite:///database.sqlite")
with engine.connect() as connection:
statement = delete(users).where(users.id == 1)
connection.execute(statement)
이 코드는 SQLAlchemy를 사용하여 데이터베이스 작업을 수행하는 기본적인 방법을 보여줍니다.
더 알아보기
SQLAlchemy 대체 방법
Peewee
Peewee는 간단하고 사용하기 쉬운 ORM입니다. SQLAlchemy만큼 기능이 풍부하지는 않지만 작은 프로젝트에 적합할 수 있습니다.
PonyORM
PonyORM은 또 다른 간단한 ORM입니다. Peewee와 마찬가지로 SQLAlchemy만큼 기능이 풍부하지는 않지만 배우고 사용하기 쉽습니다.
SQLObject
SQLObject는 오래된 ORM이지만 여전히 활발하게 개발되고 있습니다. SQLAlchemy만큼 기능이 풍부하지는 않지만 성능이 뛰어나고 대규모 프로젝트에 적합할 수 있습니다.
Tortoise ORM
Tortoise ORM은 비교적 새로운 ORM입니다. asyncio를 기반으로 하여 비동기 애플리케이션에 적합합니다.
Raw SQL
ORM을 사용하지 않고 직접 SQL 쿼리를 작성할 수도 있습니다. 이 방법은 더 많은 제어권을 제공하지만 더 많은 작업도 필요합니다.
어떤 옵션을 선택해야 할까요?
선택해야 할 옵션은 프로젝트의 요구 사항에 따라 다릅니다. 다음은 몇 가지 고려 사항입니다.
- 프로젝트 크기: 작은 프로젝트의 경우 Peewee 또는 PonyORM과 같은 간단한 ORM이 적합할 수 있습니다. 대규모 프로젝트의 경우 SQLAlchemy 또는 SQLObject와 같은 기능이 풍부한 ORM이 필요할 수 있습니다.
- 성능: 성능이 중요한 경우 SQLObject 또는 Raw SQL을 사용하는 것이 좋습니다.
- 비동기: 비동기 애플리케이션을 개발하는 경우 Tortoise ORM을 사용하는 것이 좋습니다.
- 개인 선호도: 어떤 ORM이 가장 사용하기 쉬운지는 개인의 선호도에 따라 다릅니다.
더 알아보기
python sqlalchemy