1. Learn
  2. /
  3. Courses
  4. /
  5. Python으로 배우는 데이터베이스 입문

Connected

Exercise

데이터베이스에서 테이블 자동 로드(Autoloading)

SQLAlchemy는 reflection이라고 하는 기능을 사용해 데이터베이스에서 테이블을 자동으로 로드할 수 있습니다. Reflection은 데이터베이스를 읽고 그 정보를 바탕으로 메타데이터를 구축하는 과정이에요. 수작업으로 Table을 만드는 것과 반대이며, 기존 데이터베이스로 작업할 때 매우 유용합니다.

Reflection을 수행하려면 먼저 MetaData 객체를 임포트하고 초기화해야 합니다. MetaData 객체에는 데이터베이스에 저장된 테이블에 대한 정보가 들어 있습니다. Reflection 중에는 MetaData 객체가 반영된 테이블의 정보로 자동으로 채워지므로, reflection 전에 MetaData()를 호출해 초기화만 해 두면 됩니다.

또한 SQLAlchemy 패키지에서 Table 객체를 임포트해야 합니다. 그런 다음 이 Table 객체를 사용해 엔진에서 테이블을 읽고, 컬럼을 자동 로드하며, 메타데이터를 채울 수 있습니다. 이는 Table() 한 번의 호출로 처리할 수 있으며, 이때 Table 객체를 함수에 인수를 전달하듯이 사용합니다. 예를 들어, 엔진으로 컬럼을 자동 로드하려면 Table()에 키워드 인수 autoload=True와 autoload_with=engine을 지정해야 합니다.

마지막으로, 방금 만든 객체의 정보를 확인하려면 repr() 함수를 사용합니다. 어떤 Python 객체에든 repr()은 그 객체의 문자열 표현을 반환합니다. SQLAlchemy의 Table 객체에 대해 호출하면 메타데이터에 들어 있는 해당 테이블 정보를 반환합니다.

이 연습 문제에서는 engine에 있는 "census" 테이블을 reflection하여 census라는 변수에 담는 것이 목표입니다. 이전 연습 문제에서 작성한 엔진 생성 코드는 미리 채워 두었습니다.

Instructions

100 XP
  • sqlalchemy에서 Table과 MetaData를 임포트하세요.
  • MetaData 객체 metadata를 생성하세요.
  • 다음 인수로 Table 객체를 사용해 census 테이블을 reflection 하세요:
    • 문자열 형태의 테이블 이름('census').
    • 방금 초기화한 메타데이터.
    • autoload=True
    • 자동 로드에 사용할 엔진(여기서는 engine).
  • repr() 함수를 사용해 census의 세부 정보를 출력하세요.