SQLAlchemy로 테이블에서 데이터 선택하기
지금까지 아주 잘하셨어요! 이제 SQLAlchemy를 사용해 첫 번째 SELECT 문을 만들어 볼 차례입니다. SQLAlchemy는 데이터베이스와 상호작용하는 "파이썬스러운(Pythonic)" 방식을 제공합니다. 방금 전 연습 문제에서는 원시 SQL을 사용해 데이터베이스를 직접 조회했죠. SQLAlchemy를 사용할 때는 대신 Table 객체를 통해 작업하며, SQLAlchemy가 여러분의 쿼리를 적절한 SQL 문으로 변환해 줍니다. 이렇게 하면 MySQL이나 PostgreSQL 같은 전통적인 SQL의 방언 차이를 신경 쓰지 않고, SQLAlchemy의 파이썬 프레임워크를 활용해 워크플로를 간소화하고 데이터를 더 효율적으로 조회할 수 있습니다. 이런 이유로, 전통적인 SQL에 익숙하시더라도 배워 둘 가치가 있습니다.
이번 연습에서는 다시 한 번 census 테이블의 모든 레코드를 조회하는 구문을 만들겠습니다. 다만 이번에는 sqlalchemy 모듈의 select() 함수를 사용합니다. 이 함수는 필수 인수로 테이블이나 열의 리스트 하나만 받습니다. 예: select([my_table]).
또한 .fetchmany()에 size 인수를 지정해 ResultProxy에서 일부 레코드만 가져오겠습니다.
Table과 MetaData는 이미 임포트되어 있습니다. 메타데이터는 metadata로, 데이터베이스 연결은 connection으로 제공됩니다.
이 연습은 강의의 일부입니다
Python으로 배우는 데이터베이스 입문
연습 안내
sqlalchemy모듈에서select를 임포트하세요.census테이블을 리플렉션하세요. 이 코드는 이미 작성되어 있습니다.select()함수를 사용해census테이블의 모든 레코드를 가져오는 쿼리를 만드세요. 이를 위해select()에census한 요소만 담긴 리스트를 전달하세요.- 생성되는 실제 SQL 쿼리를 확인하기 위해
stmt를 출력하세요. 이 코드는 이미 작성되어 있습니다. census테이블에서 10개의 레코드를 가져와results에 저장하세요. 이를 위해:connection의.execute()메서드를stmt를 인수로 하여 호출해 ResultProxy를 가져오세요.connection.execute(stmt)에 대해 적절한size인수를 사용해.fetchmany()를 호출하여 ResultSet을 가져오세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)