1. 학습
  2. /
  3. 강의
  4. /
  5. Python으로 배우는 데이터베이스 입문

Connected

연습 문제

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으로 제공됩니다.

지침

100 XP
  • sqlalchemy 모듈에서 select를 임포트하세요.
  • census 테이블을 리플렉션하세요. 이 코드는 이미 작성되어 있습니다.
  • select() 함수를 사용해 census 테이블의 모든 레코드를 가져오는 쿼리를 만드세요. 이를 위해 select()에 census 한 요소만 담긴 리스트를 전달하세요.
  • 생성되는 실제 SQL 쿼리를 확인하기 위해 stmt를 출력하세요. 이 코드는 이미 작성되어 있습니다.
  • census 테이블에서 10개의 레코드를 가져와 results에 저장하세요. 이를 위해:
    • connection의 .execute() 메서드를 stmt를 인수로 하여 호출해 ResultProxy를 가져오세요.
    • connection.execute(stmt)에 대해 적절한 size 인수를 사용해 .fetchmany()를 호출하여 ResultSet을 가져오세요.