>  기사  >  백엔드 개발  >  실제로 Python의 ORM 프레임워크 Flask-SQLAlchemy

실제로 Python의 ORM 프레임워크 Flask-SQLAlchemy

WBOY
WBOY원래의
2023-06-10 22:57:051836검색

ORM(Object-Relational Mapping)은 관계형 데이터베이스의 테이블 데이터를 프로그래밍 언어의 객체에 매핑하여 프로그램 개발자가 객체지향 방식으로 데이터베이스를 운영할 수 있도록 하는 프로그래밍 기술입니다. Flask-SQLAlchemy는 관계형 데이터베이스에서 Python 프로그램의 작업을 크게 단순화할 수 있는 강력한 ORM 프레임워크입니다.

이 글에서는 Flask-SQLAlchemy 프레임워크의 사용법을 예제를 통해 자세히 소개하겠습니다.

  1. 환경 구성

Flask-SQLAlchemy를 배우기 전에 먼저 Flask와 SQLAlchemy 모듈을 설치해야 합니다. Python 환경에서 pip 명령을 사용하여 설치할 수 있습니다.

pip install Flask
pip install SQLAlchemy

  1. 데이터베이스 구성

MySQL 데이터베이스를 프로젝트의 영구 저장소로 구성하세요. Flask-SQLAlchemy 개체를 생성할 때 다음 매개변수를 전달하세요.

from 플라스크 가져오기 Flask
from 플라스크_sqlalchemy import SQLAlchemy

app = Flask(__name__)

첫 번째 매개변수: 플라스크 애플리케이션 인스턴스

두 번째 매개변수: 데이터베이스 연결 URI

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@ localhost: 3306/test'

프로그램 실행 효율성을 높이려면 SQLALCHEMY_TRACK_MODIFICATIONS 옵션을 끄세요

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db 개체 초기화

db = SQLAlchemy(app)

app.config를 호출하여 설정 up Flask 애플리케이션 인스턴스의 구성 매개변수 중 SQLALCHEMY_DATABASE_URI 매개변수는 연결된 데이터베이스 유형, 사용자 이름, 비밀번호, IP 주소, 포트 번호, 데이터베이스 이름 및 기타 정보를 지정하는 데 사용됩니다.

  1. ORM 구현

데이터 모델 정의

먼저 ORM 매핑 개체인 데이터 모델을 정의해야 합니다. 여기서는 학생 정보를 예로 들어 학생 클래스를 정의합니다.

from datetime import datetime
fromFlask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

SQLAlchemy ORM 디자인 모델

class Student(db.Model):

# 定义表名
__tablename__ = 'student'
# 定义表结构,其中id为主键,自增长
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(20), nullable=False)
gender = db.Column(db.String(2), nullable=False)
birthday = db.Column(db.Date, default=datetime.now())
address = db.Column(db.String(200), nullable=False)

# 类对象序列化成字典
def to_dict(self):
    return {c.name: getattr(self, c.name, None) for c in self.__table__.columns}

Student 클래스에서는 __tablename__, ID, 이름, 성별의 테이블 구조를 정의합니다. , 생일, 주소 . 그 중 __tablename__은 테이블 이름을 지정하는 데 사용되고, id는 기본 키를 지정하여 자동으로 커지는 데 사용되며, name, 성별, 생일, 주소 필드는 학생의 이름, 성별, 생일, 주소에 대한 정보를 저장하는 데 사용됩니다. 주소.

추가, 삭제, 수정 및 쿼리 작업

다음으로 추가, 삭제, 수정 및 쿼리 작업을 구현합니다.

(1) 학생 정보 추가

@app.route('/add',method=[' POST'])
def add_student( ):

student = Student()
student.name = request.form.get('name')
student.gender = request.form.get('gender')
student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date()
student.address = request.form.get('address')
db.session.add(student)
db.session.commit()
return jsonify({'code': 200, 'msg': 'add student success.'})

먼저 request.form.get()을 통해 제출된 양식 데이터를 가져온 다음 Student 객체를 생성하고 속성 값을 설정한 후 마지막으로 db를 통해 해당 객체를 데이터베이스에 추가합니다. session.add(), db.session을 전달하면 트랜잭션이 커밋됩니다.

(2) 학생 정보 삭제

@app.route('/delete/3e2f7d559aac0f0aeba61111f4764f61',method=['DELETE'])
def delete_student(id):

student = Student.query.get(id)
if student:
    db.session.delete(student)
    db.session.commit()
    return jsonify({'code': 200, 'msg': 'delete student success.'})
else:
    return jsonify({'code': 404, 'msg': 'student not found.'})

학생 ID 매개변수 전달 , query.get() 메소드를 통해 학생 인스턴스를 얻은 후 db.session.delete() 메소드를 사용하여 데이터베이스에서 삭제하고 db.session.commit()을 통해 트랜잭션을 제출합니다.

(3) 학생 정보 수정

@app.route('/update/3e2f7d559aac0f0aeba61111f4764f61',method=['PUT'])
def update_student(id):

student = Student.query.get(id)
if student:
    student.name = request.form.get('name')
    student.gender = request.form.get('gender')
    student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date()
    student.address = request.form.get('address')
    db.session.commit()
    return jsonify({'code': 200, 'msg': 'update student success.'})
else:
    return jsonify({'code': 404, 'msg': 'student not found.'})

또한 학생 기준 id 매개변수 학생 인스턴스를 획득하고, 학생 정보를 수정한 후 db.session.commit()을 이용하여 트랜잭션을 제출한다.

(4) 학생 정보 조회

@app.route('/search')
def search_student():

students = Student.query.all()
if students:
    return jsonify({'code': 200, 'msg': 'search student success.', 'data': [student.to_dict() for student in students]})
else:
    return jsonify({'code': 404, 'msg': 'student not found.'})

query.all() 메소드를 사용하여 Student 테이블의 모든 학생 정보를 조회하고, 목록 이해를 사용합니다. 학생 개체 목록을 사전 목록으로 변환하고 반환합니다.

  1. Summary

Flask-SQLAlchemy는 Python으로 데이터베이스 작업 코드를 더 간단하고 읽기 쉽게 작성할 수 있는 매우 강력한 ORM 프레임워크입니다. 이 문서에서는 예제를 통해 Flask-SQLAlchemy 사용에 대한 심층적인 소개를 제공합니다.

실제 개발에서는 이 글과 유사한 방식으로 데이터 모델을 정의하고 추가, 삭제, 수정 및 쿼리 작업을 구현할 수 있습니다. 이러한 작업의 복잡성은 매우 낮습니다. Flask-SQLAlchemy 프레임워크를 사용하면 개발 효율성을 향상하고 프로그램 유지 관리 비용을 줄일 수 있습니다.

위 내용은 실제로 Python의 ORM 프레임워크 Flask-SQLAlchemy의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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