Flask에서 모델 관계 탐색
클래스 간 관계를 코딩하는 것이 처음에는 어려울 수 있습니다! 그것은 마치 한 묶음의 단어가 함께 던져진 것처럼 들립니다. 이 것은 저 것을 통해 이것을 알지만 저 다른 것은 알지 못합니다. 실제 사례를 사용하면 이러한 관계를 시각화하는 데 도움이 될 수 있습니다.
예를 들어 우주비행사가 몇 명 있다고 가정해 보겠습니다. 수년에 걸쳐 이 우주비행사들은 많은 식물을 방문할 것입니다. 임무당 하나의 행성. 그래서 각 임무에는 한 명의 우주 비행사와 1개의 행성이 있으며 많은 행성이 많은 우주 비행사
를 방문합니다.Flask에서 우주비행사와 행성의 관계는 다대다 관계인 반면, 우주비행사와 미션, 행성과 미션의 관계는 모두 일대다 관계입니다. 세 가지 모델이 있습니다. mission 모델은 astronaut 모델과 planet 모델 사이에서 조인 테이블으로 작동합니다. 클래스는 데이터 간의 관계를 정의(또는 모델링)하기 때문에 모델이라고 합니다.
그렇다면 이러한 관계를 어떻게 코딩해야 할까요?
조인 테이블에서 시작하는 것이 가장 쉬운데, 거기에서 두 관계를 모두 구축하기 때문입니다.
class Mission(db.Model): __tablename__ = 'missions' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String)
이것이 우리의 미션 수업의 시작입니다.
우리는 각 임무에 우주비행사 한 명이 있다는 것을 알고 있습니다.
astronaut = db.relationship
db.relationship은 두 모델이 서로 어떻게 관련되어 있는지 정의합니다.
우주 비행사 수업과 연결해 볼까요....
astronaut = db.relationship('Astronaut')
이제 두 모델(우주비행사와 미션) 사이의 양방향 관계를 추가해 보겠습니다.
astronaut = db.relationship('Astronaut', back_populates="missions")
잘했어요! Mission은 우주비행사와 행성 관계를 모두 보유하므로 행성에도 동일한 작업을 수행해 보겠습니다.
planet = db.relationship('Planet', back_populates="missions")
관계를 주제로 한 미션 수업입니다.
class Mission(db.Model): __tablename__ = 'missions' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) astronaut = db.relationship('Astronaut', back_populates="missions") planet = db.relationship('Planet', back_populates="missions")
멋져요! 다시 돌아가서 지침을 살펴보겠습니다. mission 모델은 astronaut 모델과 planet 사이에서 _join 테이블으로 작동합니다. 모델._
그래서 우리는 우주비행사를 미션에, 행성을 미션에 연결해야 합니다. 우주비행사부터 시작해 보세요:
missions = db.relationship('Mission', back_populates="astronauts")
여기서 임무는 복수형입니다. 왜냐하면 우주비행사는 여러 임무를 수행하기 때문입니다(아마도!).
그리고 비슷하게 생긴 Planet은 다음과 같습니다.
missions = db.relationship('Mission', back_populates="planets")
훌륭해요! 모두 합쳐서 다음과 같습니다.
class Planet(db.Model): __tablename__ = 'planets' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) distance_from_earth = db.Column(db.Integer) nearest_star = db.Column(db.String) missions = db.relationship('Mission', back_populates="planet") class Astronaut(db.Model): __tablename__ = 'astronauts' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) field_of_study = db.Column(db.String) missions = db.relationship('Mission', back_populates="astronaut") class Mission(db.Model): __tablename__ = 'missions' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) astronaut = db.relationship('Astronaut', back_populates="astronauts") planet = db.relationship('Planet', back_populates="missions")
마지막으로 임무 테이블에 외래 키를 추가해 보겠습니다. 외래 키는 둘을 함께 연결하는 다른 데이터베이스의 항목을 참조하는 정수입니다. 예를 들어 우주 비행사 1의 외래 키는 임무 테이블에서 1이므로 해당 열에 숫자 1이 표시될 때마다 해당 우주 비행사에게 적용된다는 것을 알 수 있습니다!
미션은 모든 관계를 담당하기 때문에 외래키가 필요한 유일한 클래스입니다.
class Mission(db.Model, SerializerMixin): __tablename__ = 'missions' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) astronaut_id = db.Column(db.Integer, db.ForeignKey('astronauts.id')) planet_id = db.Column(db.Integer, db.ForeignKey('planets.id')) astronaut = db.relationship('Astronaut', back_populates="missions") planet = db.relationship('Planet', back_populates="missions") serialize_rules = ('-astronaut.missions', '-astronaut.planets')
훌륭한 작업이었습니다! 우리는 모델 간에 몇 가지 관계를 설정했습니다. 코딩해주셔서 감사합니다!
출처: 이 실습을 제공한 Flatiron School에 감사드립니다! '과학자'라는 수업명을 '우주비행사'로 변경했습니다.
위 내용은 Flask에서 모델 관계 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...
