인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Full Stack 개발자님의 프로필 이미지

작성한 질문수

실전! FastAPI 입문

ORM 테이블 생성

해결된 질문

작성

·

50

0

안녕하세요

nest로 개발을 진행하다가 fast API로 전향하려는 개발자 입니다.

저와 같은 경우는, TypeORM을 사용하고 있었습니다.

TypeORM은 아래 코드와 같이 DB와 연결해 놓고 @Entity 어노테이션을 사용하면 테이블이 자동 생성됩니다.

강의를 보면 테이블을 생성하는 쿼리를 console로 만들어서 DB SQL에 직접 작성하는 것으로 확인됩니다.

FAST API는 NEST처럼 테이블이 자동 생성되는 기능이 없는 걸까요??

또한 @ManyToMany @ManyToOne과 같은 어노테이션을 사용하면 연관관계가 쉽게 맵핑되어

별도의 join 쿼리 없이도 조회,수정,삭제가 가능합니다.

이러한 부분 또한 FAST API는 지원하는 기능이 없는 걸까요??

import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class PostsModel {
  @PrimaryGeneratedColumn() //알아서 값을 1씩 증가하는 것을 만들어 준다.
  id: number;

  @Column()
  author: string;

  @Column()
  title: string;

  @Column()
  content: string;

  @Column()
  likeCount: number;

  @Column()
  commentCount: number;
}
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { PostsModule } from './posts/posts.module';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
    PostsModule,
    TypeOrmModule.forRoot({
      //forRoot -> typeOrm과 nestJs을 연결할 수 있는 연결고리를 만드는 것
      type: 'postgres',
      host: '127.0.0.1',
      port: 5432,
      username: 'postgres',
      password: 'postgres',
      database: 'postgres',
      entities: [], //데이터베이스와 연동될 모델들
      synchronize: true, //nestJS에서 작성하는 typeOrm 코드와 데이터베이스싱크를 자동으로 맞출 것이냐(개발에서는 true, 프로덕션에서는 false)
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

 

답변 1

0

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요, sqlachemy를 사용할 때는 alembic이라는 DB 마이그레이션 툴을 이용해서 ORM으로 정의한 코드에 맞는 스키마 변경 사항을 명령어를 통해 손쉽게 조작할 수 있습니다.

다양한 테이블 연관 관계 매핑은 relationship을 이용해서 하는데, 이번 강의에서는 모든 경우를 상세하게 다루지는 못했네요.

 

Full Stack 개발자님의 프로필 이미지

혹시 추후에 좀 더 심화된 강의를 만드실 예정이 있으신가요??

신동현님의 프로필 이미지
신동현
지식공유자

네, 강의 리뉴얼 및 심화 내용까지 다루는 강의를 기획 중인데 현재 다른 강의 제작 중이라 세부 일정은 아직 미정입니다..!