Python에서의 SQLAlchemy 관계 연산 소개(코드 포함)
관계형 데이터베이스는 관계형 모델을 기반으로 하는 데이터베이스이므로 데이터베이스 프로그래밍에서는 테이블 간의 관계가 특히 중요합니다. 이 섹션에서는 독자가 SQLAlchemy의 관계 작업을 빠르게 익힐 수 있도록 SQLAlchemy에서 관계를 정의하는 방법과 관계를 사용하여 쿼리를 수행하는 방법에 중점을 둡니다.
1. 사례
3개의 엔터티 테이블: 수업 테이블, 학생 테이블, 학생 테이블, 교사 테이블 및 1개의 관계 테이블: class_teacher를 디자인합니다. 수업과 학생 사이에는 일대다 관계가 있고, 수업과 교사 사이에는 다대다 관계가 있습니다.
from sqlalchemy import Table,Column,Integer,ForeignKey,String from sqlalchemy.orm import relationship,backref from sqlalchemy.ext.declarative import declarative_base Base=declarative_base() class Class(Base): __tablename__='class' class_id=Column(Integer,primary_key=True) name=Column(String(50)) level=Column(Integer) address=Column(String(50)) class_teachers=relationship("ClassTeacher",backref="class") students=relationship("Student",backref="class") class Student(Base): __tablename__='student' student_id=Column(Integer,primary_key=True) name=Column(String(50)) age=Column(Integer) gender=Column(String(10)) address=Column(String(50)) class_id=Column(Integer,ForeignKey('class.id')) class Teacher(Base): __tablename__='teacher' teacher_id=Column(Integer,primary_key=True) name=Column(String(50)) gender=Column(String(10)) telephone=Column(String(50)) address=Column(String(50)) class_teachers=relationship("ClassTeacher",backref="teacher") class ClassTeacher(Base): __tablename__='class_teacher' teacher_id=Column(Integer,ForeignKey('teacher.teacher_id'),primary_key=True) class_id=Column(Integer,ForeignKey("class.id"),primary_key=True)
코드는 4개의 SQLAlchemy 모델을 사용하여 4개의 테이블을 정의합니다. 관계 정의와 관련된 부분은 다음과 같습니다.
외래 키 설정: 열 정의에서 외래 키 세트의 열에 ForeignKey를 전달합니다. 위로.
class_id=Column(Integer,ForeignKey('class.id'))
관계 설정: 관계 키워드를 통해 상위 모델의 단어 테이블에 대한 참조를 설정합니다. 예를 들어 클래스 모델의 관계 설정은 다음과 같습니다.
students=relationship("Student",backref="calss")
역참조 매개변수는 선택적 매개변수입니다. backref를 설정하면 이 문은 상위 테이블에서 하위 테이블로의 참조도 설정합니다.
일대다 관계 활용: 앞으로는 학생 속성을 통해 해당 수업에 속한 모든 학생의 정보를 직접 얻을 수 있습니다. 다음 코드는 [Class 3, Class 2] 클래스의 모든 학생 정보를 출력할 수 있습니다.
class=session.query(Class).filter(Clss.name=="三年二班").first() for student in class_.students: print(student)
다대다 관계 사용: 모델 Class와 Teacher의 외래 키가 각각 설정되고 해당 관계 구현이 상위 모델에 설정되는 관련 모델 ClassTeacher를 통해 구현됩니다. 다대다 관계는 두 상위 테이블 간의 다대일 관계를 구현하는 연관 테이블로 생각할 수도 있습니다. 수업과 교사 사이에는 다대다 관계가 있습니다. 다음 코드는 수업 [2학년, 3학년]의 모든 교사의 정보를 인쇄할 수 있습니다.
class=session.query(Class).filter(Class.name=="三年二班").first() for class_teacher in class_.class_teachers: teacher=class_teacher.teacher print(teacher)
2. 연결 쿼리
실제 개발에서는 관계가 있을 때 다중 테이블 연결 쿼리가 반드시 필요합니다. 다음은 다중 테이블 조인 쿼리를 수행하는 방법을 보여주는 실제 예입니다.
쿼리문에 Join 키워드를 사용하여 연결 쿼리를 수행하고 모든 3학년 학생의 이름을 출력할 수 있습니다.
students=session.query(Student).join(Class).filter(Class.level==3).all() for student in students: print(student.namr)
위 쿼리 함수는 자동으로 외래 키 관계를 연결 조건으로 사용하며, 쿼리는 SQLAlchemy에 의해 자동으로 다음 SQL 문으로 변환되고 실행됩니다.
SELECT student.student_id AS student_student_id, student.name AS student.name, student.age AS student.age, student.gender AS student.gender, student.address AS student.address, student.class_id AS student_class_id FROM student JOIN class ON student.class_id=class.class_id WHERE class.leve=? (3,)
연결된 테이블의 내용을 인쇄해야 하는 경우 쿼리에 여러 테이블 개체를 지정할 수 있습니다.
다음 명령문은 모든 3학년 학생의 이름과 수업 이름을 인쇄합니다.
for student,class_ in session.query(Student,Class).join(Class).filter(Class.level==3).all(): print(student.name,class_.name)
위 쿼리 함수는 자동으로 외래 키 관계를 연결 조건으로 사용합니다. 쿼리는 SQLAlchemy에 의해 자동으로 다음 SQL 문으로 변환되어 실행됩니다.
SELECT student.student_id AS student_student_id, student.name AS student.name, student.age AS student.age, student.gender AS student.gender, student.address AS student.address, student.class_id AS student_class_id, class.class_id AS class_class_id, class.name AS class_name, class.level AS class_level, class.address AS class_location FROM student JOIN class ON student.class_id=class.class_id WHERE class.leve=? (3,)
외래 키 이외의 다른 필드를 연결로 사용해야 하는 경우 조건이 있는 경우 개발자가 조인에서 직접 설정해야 합니다. 다음은 학급 주소가 학생의 주소와 동일한 학생의 이름을 출력합니다.
for student_name, in session.query(Student.name).join(Class,Class.address==Student.address).filter(Class.level==3).all(): print(student_name)
위 쿼리 함수는 개발자가 연결 조건으로 지정한 명령문을 사용하며, 쿼리되는 필드를 직접 지정하므로 결과가 줄어듭니다. 실제 SQL의 단계 수 쿼리된 필드는 성능을 향상시킵니다. 쿼리는 실행을 위해 SQLAlchemy에 의해 자동으로 다음 SQL 문으로 변환됩니다.
위 내용은 Python에서의 SQLAlchemy 관계 연산 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

VS 코드는 파이썬을 작성하는 데 사용될 수 있으며 파이썬 애플리케이션을 개발하기에 이상적인 도구가되는 많은 기능을 제공합니다. 사용자는 다음을 수행 할 수 있습니다. Python 확장 기능을 설치하여 코드 완료, 구문 강조 및 디버깅과 같은 기능을 얻습니다. 디버거를 사용하여 코드를 단계별로 추적하고 오류를 찾아 수정하십시오. 버전 제어를 위해 git을 통합합니다. 코드 서식 도구를 사용하여 코드 일관성을 유지하십시오. 라인 도구를 사용하여 잠재적 인 문제를 미리 발견하십시오.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

VS 코드는 Windows 8에서 실행될 수 있지만 경험은 크지 않을 수 있습니다. 먼저 시스템이 최신 패치로 업데이트되었는지 확인한 다음 시스템 아키텍처와 일치하는 VS 코드 설치 패키지를 다운로드하여 프롬프트대로 설치하십시오. 설치 후 일부 확장은 Windows 8과 호환되지 않을 수 있으며 대체 확장을 찾거나 가상 시스템에서 새로운 Windows 시스템을 사용해야합니다. 필요한 연장을 설치하여 제대로 작동하는지 확인하십시오. Windows 8에서는 VS 코드가 가능하지만 더 나은 개발 경험과 보안을 위해 새로운 Windows 시스템으로 업그레이드하는 것이 좋습니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

VS 코드 확장은 악의적 인 코드 숨기기, 취약성 악용 및 합법적 인 확장으로 자위하는 등 악성 위험을 초래합니다. 악의적 인 확장을 식별하는 방법에는 게시자 확인, 주석 읽기, 코드 확인 및주의해서 설치가 포함됩니다. 보안 조치에는 보안 인식, 좋은 습관, 정기적 인 업데이트 및 바이러스 백신 소프트웨어도 포함됩니다.

vs 코드에서는 다음 단계를 통해 터미널에서 프로그램을 실행할 수 있습니다. 코드를 준비하고 통합 터미널을 열어 코드 디렉토리가 터미널 작업 디렉토리와 일치하는지 확인하십시오. 프로그래밍 언어 (예 : Python의 Python Your_file_name.py)에 따라 실행 명령을 선택하여 성공적으로 실행되는지 여부를 확인하고 오류를 해결하십시오. 디버거를 사용하여 디버깅 효율을 향상시킵니다.
