ORM(Object-Relational Mapping)是一種程式設計技術,它把關係型資料庫中的表格資料映射到程式語言中的對象,使得程式開發者可以用物件導向的方式對資料庫進行操作。 Flask-SQLAlchemy是一款強大的ORM框架,能大幅簡化Python程式對於關聯式資料庫的操作。
本文將會透過一個實例,詳細介紹Flask-SQLAlchemy框架的使用方法。
在學習Flask-SQLAlchemy之前,我們需要先安裝Flask及SQLAlchemy模組。在Python環境下使用pip指令即可安裝。
pip install Flask
pip install SQLAlchemy
配置MySQL資料庫作為專案的持久化存儲,在建立Flask-SQLAlchemy物件時,傳遞如下參數即可:
from flask import Flask
from flask_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)
定義資料模型
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}
(1) 新增學生資訊
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.'})
@app.route('/delete/
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.'})
@app.route('/update/
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.'})
@app.route('/search')
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.'})
以上是Python中的ORM框架Flask-SQLAlchemy實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!