>데이터 베이스 >MySQL 튜토리얼 >SQLAlchemy를 사용하여 기존 MySQL 데이터베이스를 Flask 애플리케이션에 통합하는 방법은 무엇입니까?

SQLAlchemy를 사용하여 기존 MySQL 데이터베이스를 Flask 애플리케이션에 통합하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-09 08:11:021062검색

How to Integrate an Existing MySQL Database into a Flask Application Using SQLAlchemy?

기존 MySQL 데이터베이스를 Flask 애플리케이션에 통합

SQLAlchemy를 사용하여 기존 MySQL 데이터베이스를 Flask 애플리케이션과 통합하는 데 어려움을 겪고 있습니다. Flask는 확립된 데이터베이스와 관련된 시나리오에 직접적으로 관여하지 않지만 최적의 접근 방식을 이해하는 것이 중요합니다.

SQLAlchemy 이해

SQLAlchemy는 강력한 ORM(객체 관계형) Python과 SQL 데이터베이스 간의 격차를 해소하는 매핑) 프레임워크입니다. 기존 데이터베이스에서 SQLAlchemy를 효과적으로 사용하려면 Flask 고려 사항을 일시적으로 따로 설정하는 것이 좋습니다. SQLAlchemy의 기본 사항을 익히는 데 집중하세요.

기본 모델 생성

다음 단계에 따라 기존 데이터베이스 테이블을 반영하는 SQLAlchemy용 기본 모델을 생성하세요.

  1. create_engine()을 사용하여 MySQL 데이터베이스에 대한 연결을 설정합니다.
  2. declarative_base()를 사용하여 기본 클래스를 정의하여 데이터베이스 테이블에 대한 Python 클래스를 생성합니다.
  3. Base를 활용합니다. 메타데이터.reflect(엔진)을 사용하여 기본 클래스를 기존 데이터베이스 테이블로 자동으로 채웁니다.

예제 코드 조각

from sqlalchemy import create_engine, declarative_base

engine = create_engine('mysql://<username>:<password>@<host>:<port>/<database>', echo=True)
Base = declarative_base()
Base.metadata.reflect(engine)

테이블 관계 정의

기본 모델이 생성되면 SQLAlchemy의 관계 모델을 사용하여 데이터베이스 테이블 간의 관계를 설정합니다. 필요에 따라 상위-하위 또는 일대다 연결을 정의합니다.

예제 코드 조각

class Users(Base):
    __table__ = Base.metadata.tables['users']

class Orders(Base):
    __table__ = Base.metadata.tables['orders']

Users.orders = relationship("Orders", backref="user")

연결 테스트

관계가 정의되면 데이터베이스에 대한 연결을 테스트할 수 있습니다. 데이터베이스 세션을 열고 SQLalchemy의 쿼리 모델을 사용하여 간단한 쿼리를 실행합니다.

예제 코드 조각

from sqlalchemy.orm import scoped_session, sessionmaker

db_session = scoped_session(sessionmaker(bind=engine))
for item in db_session.query(Users.id, Users.name):
    print(item)

Flask와 통합

SQLAlchemy에 대한 확실한 이해를 바탕으로 이제 기존 데이터베이스를 Flask 애플리케이션에 통합할 수 있습니다. 컨트롤러와 뷰를 사용하여 Flask 컨텍스트 내에서 데이터베이스 기능을 노출하세요.

위 내용은 SQLAlchemy를 사용하여 기존 MySQL 데이터베이스를 Flask 애플리케이션에 통합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.