ORM(Object-Relational Mapping)은 관계형 데이터베이스의 테이블 데이터를 프로그래밍 언어의 객체에 매핑하여 프로그램 개발자가 객체지향 방식으로 데이터베이스를 운영할 수 있도록 하는 프로그래밍 기술입니다. Flask-SQLAlchemy는 관계형 데이터베이스에서 Python 프로그램의 작업을 크게 단순화할 수 있는 강력한 ORM 프레임워크입니다.
이 글에서는 Flask-SQLAlchemy 프레임워크의 사용법을 예제를 통해 자세히 소개하겠습니다.
Flask-SQLAlchemy를 배우기 전에 먼저 Flask와 SQLAlchemy 모듈을 설치해야 합니다. Python 환경에서 pip 명령을 사용하여 설치할 수 있습니다.
pip install Flask
pip install SQLAlchemy
MySQL 데이터베이스를 프로젝트의 영구 저장소로 구성하세요. Flask-SQLAlchemy 개체를 생성할 때 다음 매개변수를 전달하세요.
from 플라스크 가져오기 Flask
from 플라스크_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@ localhost: 3306/test'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
app.config를 호출하여 설정 up Flask 애플리케이션 인스턴스의 구성 매개변수 중 SQLALCHEMY_DATABASE_URI 매개변수는 연결된 데이터베이스 유형, 사용자 이름, 비밀번호, IP 주소, 포트 번호, 데이터베이스 이름 및 기타 정보를 지정하는 데 사용됩니다.
데이터 모델 정의
먼저 ORM 매핑 개체인 데이터 모델을 정의해야 합니다. 여기서는 학생 정보를 예로 들어 학생 클래스를 정의합니다.
from datetime import datetime
fromFlask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
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 테이블의 모든 학생 정보를 조회하고, 목록 이해를 사용합니다. 학생 개체 목록을 사전 목록으로 변환하고 반환합니다.
Flask-SQLAlchemy는 Python으로 데이터베이스 작업 코드를 더 간단하고 읽기 쉽게 작성할 수 있는 매우 강력한 ORM 프레임워크입니다. 이 문서에서는 예제를 통해 Flask-SQLAlchemy 사용에 대한 심층적인 소개를 제공합니다.
실제 개발에서는 이 글과 유사한 방식으로 데이터 모델을 정의하고 추가, 삭제, 수정 및 쿼리 작업을 구현할 수 있습니다. 이러한 작업의 복잡성은 매우 낮습니다. Flask-SQLAlchemy 프레임워크를 사용하면 개발 효율성을 향상하고 프로그램 유지 관리 비용을 줄일 수 있습니다.
위 내용은 실제로 Python의 ORM 프레임워크 Flask-SQLAlchemy의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!