ORM (Object-Relational Mapping) est une technologie de programmation qui mappe les données de table d'une base de données relationnelle à des objets dans un langage de programmation, permettant aux développeurs de programmes d'exploiter la base de données de manière orientée objet. Flask-SQLAlchemy est un framework ORM puissant qui peut grandement simplifier le fonctionnement des programmes Python sur des bases de données relationnelles.
Cet article présentera en détail comment utiliser le framework Flask-SQLAlchemy à travers un exemple.
Avant d'apprendre Flask-SQLAlchemy, nous devons d'abord installer les modules Flask et SQLAlchemy. Vous pouvez l'installer à l'aide de la commande pip dans l'environnement Python.
pip install Flask
pip install SQLAlchemy
Configurez la base de données MySQL comme stockage persistant du projet Lors de la création d'un objet Flask-SQLAlchemy, transmettez simplement les paramètres suivants :
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)
Appelez app.config pour définir up Flask Paramètres de configuration de l'instance d'application, parmi lesquels le paramètre SQLALCHEMY_DATABASE_URI est utilisé pour spécifier le type de base de données connectée, le nom d'utilisateur, le mot de passe, l'adresse IP, le numéro de port, le nom de la base de données et d'autres informations.
Définir le modèle de données
Tout d'abord, nous devons définir le modèle de données, qui est l'objet de mappage ORM. Ici, nous prenons les informations sur les étudiants comme exemple pour définir une classe Student :
à partir de l'importation datetime. datetime
from flask_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}
Dans la classe Student, nous définissons les structures de table de __tablename__, id, name, Gender , anniversaire, adresse . Parmi eux, __tablename__ est utilisé pour spécifier le nom de la table, id est utilisé pour spécifier la clé primaire et se développe automatiquement, et les champs nom, sexe, anniversaire et adresse sont utilisés pour stocker des informations sur le nom, le sexe, l'anniversaire et l'adresse de l'étudiant. adresse.
Opérations d'ajout, de suppression, de modification et d'interrogation
Ensuite, nous implémentons les opérations d'ajout, de suppression, de modification et d'interrogation :
(1) Ajouter des informations sur l'élève
@app.route('/add', méthodes=[' 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.'})
Récupérez d'abord les données du formulaire soumis via request.form.get(), puis créez l'objet Student et définissez la valeur de la propriété, et enfin ajoutez l'objet à la base de données via db. session.add() et pass db.session commit() valide la transaction.
(2) Supprimer les informations sur l'étudiant
@app.route('/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.'})
Passez le paramètre d'identification de l'étudiant , Obtenez l'instance d'étudiant via la méthode query.get(), supprimez-la de la base de données à l'aide de la méthode db.session.delete() et soumettez la transaction via db.session.commit().
(3) Modifier les informations sur l'étudiant
@app.route('/update/
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.'})
Également basé sur l'étudiant Paramètre id Obtenez l'instance de l'étudiant et après avoir modifié les informations sur l'étudiant, utilisez db.session.commit() pour soumettre la transaction.
(4) Interroger les informations sur les étudiants
@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.'})
Utilisez la méthode query.all() pour interroger toutes les informations sur les étudiants dans la table Student et utiliser la compréhension de liste Convertissez la liste des objets étudiants en liste de dictionnaire et renvoyez-la.
Flask-SQLAlchemy est un framework ORM très puissant qui peut rendre l'écriture de codes d'opération de base de données en Python plus simple et plus facile à lire. Cet article fournit une introduction approfondie à l'utilisation de Flask-SQLAlchemy à travers un exemple.
En développement réel, nous pouvons définir le modèle de données et implémenter les opérations d'ajout, de suppression, de modification et de requête d'une manière similaire à cet article. La complexité de ces opérations est très faible. L'utilisation du framework Flask-SQLAlchemy nous permet d'améliorer l'efficacité du développement et de réduire les coûts de maintenance des programmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!