Maison  >  Article  >  développement back-end  >  Explication détaillée du framework ORM Flask-SQLAlchemy en Python

Explication détaillée du framework ORM Flask-SQLAlchemy en Python

WBOY
WBOYoriginal
2023-06-09 23:48:072004parcourir

Flask-SQLAlchemy est un framework ORM (Object Relational Mapping) basé sur SQLAlchemy, adapté aux applications Flask. Le framework ORM protège les opérations de la base de données sous-jacente et fournit une interface de programmation Python, permettant aux développeurs d'utiliser directement le code Python pour faire fonctionner la base de données sans écrire d'instructions SQL.

Cet article présentera en détail l'utilisation du framework Flask-SQLAlchemy, y compris comment se connecter à la base de données, créer des tables, insérer, mettre à jour, supprimer des données et interroger des données.

Connectez-vous à la base de données

Avant d'utiliser Flask-SQLAlchemy, vous devez d'abord configurer la connexion à la base de données dans Flask. La méthode spécifique est la suivante :

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接信息'  # 数据库连接信息
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 是否追踪对象的修改
db = SQLAlchemy(app)

Parmi elles, SQLALCHEMY_DATABASE_URI sont les informations de connexion à la base de données. Si vous utilisez SQLite, le format est sqlite:///文件路径;如果是MySQL,则格式为mysql+pymysql://用户名:密码@主机名/数据库名(pymysql是用于连接MySQL的Python库);如果是PostgreSQL,则格式为postgresql://用户名:密码@主机名/数据库名.

SQLALCHEMY_TRACK_MODIFICATIONS indique s'il faut suivre les modifications apportées à l'objet. S'il est défini sur True, l'état de l'objet est vérifié et écrit dans la base de données à la fin de chaque requête. Cette fonctionnalité peut être utilisée pour le débogage et l’optimisation des performances, mais entraîne une certaine surcharge. Il est donc recommandé de le désactiver dans les environnements de production.

Créer des tables

Flask-SQLAlchemy prend en charge la définition de tables via des classes Python. Chaque classe correspond à une table de base de données et les attributs de la classe correspondent aux champs de la table de base de données.

Ce qui suit est un exemple :

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

Parmi eux, db.Model est la classe de base de toutes les classes de modèle, indiquant que cette classe est un modèle de base de données. id, username et email sont les champs de cette table, où id est la clé primaire, le nom d'utilisateur et l'email sont tous deux uniques et ne peuvent pas être vides. La méthode __repr__() est utilisée pour imprimer des objets pour un débogage facile.

Pour créer cette table, exécutez simplement la commande suivante :

from app import db
db.create_all()

Cela créera une table nommée User dans la base de données. S'il existe déjà, il ne sera pas recréé. Si plusieurs tables doivent être créées, elles peuvent être créées à l'aide de la commande db.create_all() au même endroit.

Insérer des données

Pour insérer des données dans la base de données, il vous suffit de créer une instance de classe et d'appeler les méthodes add() et commit().

from app import db
from app.models import User

user = User(username='test', email='test@test.com')
db.session.add(user)
db.session.commit()

Dans le code ci-dessus, un objet User est d'abord créé puis ajouté à la session de base de données. Enfin, appelez la méthode commit() pour valider la transaction et stocker les données dans la base de données.

Mettre à jour les données

La mise à jour des données est similaire à l'insertion de données. Il vous suffit d'interroger les données à mettre à jour, de modifier leurs attributs et de les soumettre.

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
user.email = 'new_test@test.com'
db.session.commit()

Dans le code ci-dessus, l'objet Utilisateur à mettre à jour est d'abord interrogé en fonction du nom d'utilisateur, puis l'attribut email est modifié et la modification est soumise.

La suppression de données

est similaire à la mise à jour des données. Il vous suffit d'interroger d'abord les données à supprimer, puis d'appeler la méthode delete() pour les supprimer.

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
db.session.delete(user)
db.session.commit()

Dans le code ci-dessus, l'objet User à supprimer est d'abord interrogé en fonction du nom d'utilisateur, puis la méthode delete() est appelée pour le supprimer.

Données de requête

Flask-SQLAlchemy prend en charge une variété de méthodes de requête, notamment l'interrogation par conditions, le tri, la pagination, etc.

Requête par condition

La requête par condition est la méthode la plus courante. Vous pouvez utiliser la méthode query.filter() pour spécifier les conditions de requête. L'exemple de code est le suivant :

from app import db
from app.models import User

# 查询所有
users = User.query.all()

# 条件查询
users = User.query.filter_by(username='test').all()

Dans le code ci-dessus, la première ligne de code interroge toutes les données de la table User ; la deuxième ligne de code interroge les données selon la condition username='test'.

Trier la requête

Vous pouvez utiliser la méthode order_by() pour trier les résultats de la requête. L'exemple de code est le suivant :

from app import db
from app.models import User

# 按名称排序(升序)
users = User.query.order_by(User.username).all()

# 按名称排序(降序)
users = User.query.order_by(User.username.desc()).all()

Dans le code ci-dessus, la première ligne de code trie les résultats de la requête par ordre croissant du nom d'utilisateur ; la deuxième ligne de code trie les résultats de la requête par ordre décroissant du nom d'utilisateur.

Requête de pagination

Vous pouvez utiliser la méthode paginate() pour implémenter une requête de pagination. L'exemple de code est le suivant :

from app import db
from app.models import User

# 每页2条,查询第1页
users = User.query.paginate(1, 2, False)

# 查询第一页
users = User.query.order_by(User.username).paginate(1, 10, False)

Dans le code ci-dessus, la première ligne de code interroge 2 éléments de données sur la page 1 ; la deuxième ligne de code interroge 10 éléments de données sur la page 1 triés par nom d'utilisateur.

Résumé

Flask-SQLAlchemy est un puissant framework ORM qui fournit une interface puissante pour interroger et exploiter des bases de données, permettant aux développeurs d'exploiter des bases de données rapidement et facilement. Cet article présente l'utilisation de Flask-SQLAlchemy, notamment la création de tables, l'insertion, la mise à jour, la suppression et l'interrogation de données. J'espère que cet article pourra aider les lecteurs à mieux comprendre et appliquer Flask-SQLAlchemy.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn