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

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

PHPz
PHPzoriginal
2023-06-10 20:58:582323parcourir

SQLAlchemy est une puissante bibliothèque Python SQL qui fournit une abstraction de haut niveau pour fonctionner sur des bases de données. En utilisant le framework ORM (Object Relational Mapping) de SQLAlchemy, nous pouvons facilement exploiter la base de données de manière orientée objet dans le programme sans écrire d'instructions SQL complexes et sans traiter les détails sous-jacents tels que les connexions et les transactions de base de données. Dans cet article, nous présenterons en profondeur le framework ORM de SQLAlchemy et explorerons comment l'utiliser pour effectuer diverses opérations de base de données.

1. Installez et configurez SQLAlchemy

Avant de commencer à utiliser SQLAlchemy, nous devons d'abord l'installer. Vous pouvez utiliser un gestionnaire de packages tel que pip ou conda pour installer SQLAlchemy :

pip install sqlalchemy

Une fois l'installation terminée, nous pouvons utiliser la bibliothèque SQLAlchemy dans les programmes Python. Avant de commencer à l'utiliser, nous devons initialiser le moteur SQLAlchemy et les métadonnées dans le programme. Vous pouvez utiliser le code suivant pour y parvenir :

from sqlalchemy import create_engine, MetaData

engine = create_engine('数据库连接字符串')
metadata = MetaData(bind=engine)

Parmi eux, la "chaîne de connexion à la base de données" doit être remplacée par la chaîne de connexion à la base de données réelle, par exemple :

engine = create_engine('mysql+pymysql://root:password@localhost/test')

La base de données MySQL est utilisée ici, le nom d'utilisateur est root , le mot de passe est le mot de passe et le nom de la base de données connectée pour le test.

2. Définir les tables de base de données et le mappage ORM

Avant d'utiliser le framework ORM de SQLAlchemy pour fonctionner, nous devons d'abord définir la structure de la table de base de données. Ceci peut être réalisé en définissant une classe Python. Par exemple :

from sqlalchemy import Column, Integer, String

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    age = Column(Integer)
    email = Column(String(120), unique=True)

    def __repr__(self):
        return f"<User(name='{self.name}', age={self.age}, email='{self.email}')>"

Dans cet exemple, nous définissons une classe User, qui correspond à une table de base de données nommée 'users'. Ce tableau contient quatre champs : identifiant, nom, âge et email. En définissant ces attributs dans la classe Python, nous établissons une relation de mappage, et chaque colonne du tableau correspond à un attribut de la classe Python. Vous pouvez utiliser la fonction __repr__ pour afficher facilement les propriétés d'un objet.

Afin de mapper la classe User et la table de base de données, nous devons également définir un objet Metadata de la table de données. Cet objet contient des informations décrivant la structure de la table de données, telles que la représentation, les noms de colonnes, les types de données, les contraintes, etc. Dans le même temps, nous devons également utiliser la fonction sessionmaker pour créer une fabrique de sessions permettant de créer des objets de session de base de données :

from sqlalchemy.orm import sessionmaker

Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)

Ici, nous utilisons la méthode create_all() pour mapper toutes les classes qui héritent de la classe Base. L'objet Session est une fonction d'usine utilisée pour créer une session de base de données, qui doit être liée à un moteur de base de données.

3. Utiliser ORM pour les opérations de base de données

Après avoir défini les classes et les objets de métadonnées de la table de données, nous pouvons commencer à utiliser ORM pour les opérations de base de données. L'ORM de SQLAlchemy fournit une série d'API qui peuvent être utilisées pour les opérations CRUD et les opérations de requête. Nous présenterons ces opérations séparément ci-dessous.

  1. Ajouter des données

L'une des opérations les plus couramment utilisées dans ORM consiste à ajouter des données. Ceci peut être réalisé en créant un objet de table de données et en l'ajoutant à la session.

from sqlalchemy.orm import Session

user = User(name='Alice', age=20, email='alice@example.com')
session = Session()
session.add(user)
session.commit()

Dans cet exemple, nous créons un objet User et l'ajoutons à la session. Enfin, les données sont soumises à la base de données en appelant la méthode commit().

  1. Modifier les données

Utilisez le framework ORM pour modifier les données Vous pouvez utiliser les méthodes rollback() et commit() pour implémenter des opérations de transaction.

session = Session()
user = session.query(User).filter_by(name='Alice').first()
if user:
    user.age = 21
    session.rollback()
    session.commit()

Dans cet exemple, nous obtenons d'abord un enregistrement utilisateur nommé 'Alice' à partir de la base de données en utilisant la méthode query() de l'objet session. Ensuite, l'attribut age de l'utilisateur est modifié et la méthode rollback() est appelée. Cette opération annulera toutes les opérations de mise à jour survenues dans la base de données après la modification. Enfin, l’appel de la méthode commit() soumettra les données modifiées à la base de données.

  1. Suppression de données

Il est également très simple d'utiliser le framework ORM pour supprimer des données Vous pouvez directement supprimer les données à supprimer de la réponse.

session = Session()
user = session.query(User).filter_by(name='Alice').first()
if user:
    session.delete(user)
    session.commit()

Dans cet exemple, nous utilisons d'abord la méthode query() pour obtenir un enregistrement utilisateur nommé « Alice » à partir de la base de données. Supprimez ensuite cet enregistrement de la session et soumettez l'opération de suppression à la base de données via la méthode commit().

  1. Requête de données

Vous pouvez utiliser la méthode query() pour effectuer des opérations de requête et utiliser la méthode filter_by() pour spécifier les conditions de requête. Une fois la requête terminée, vous pouvez utiliser la méthode all() pour obtenir tous les résultats, ou vous pouvez utiliser la méthode first() pour obtenir le premier résultat.

session = Session()
users = session.query(User).all()
for user in users:
    print(user)

Dans cet exemple, nous avons d'abord utilisé la méthode query() pour obtenir tous les enregistrements de la table User. Parcourez ensuite tous les résultats et affichez les attributs.

En plus des requêtes simples, nous pouvons également utiliser certaines méthodes de requête avancées, telles que l'utilisation de la méthode order_by() pour trier selon une certaine colonne, ou l'utilisation de la méthode limit() pour limiter le nombre de résultats renvoyés.

users = session.query(User).order_by(User.age.desc()).limit(10).all()

Ici, nous obtenons les 10 meilleurs enregistrements de la table User par ordre décroissant selon la colonne d'âge.

4. Résumé

SQLAlchemy est une puissante bibliothèque Python SQL et son framework ORM fournit une abstraction de haut niveau pour l'exploitation des bases de données. En définissant des classes, des objets de métadonnées et des fabriques de sessions, nous pouvons facilement implémenter diverses opérations de base de données. SQLAlchemy fournit de nombreuses API riches qui peuvent être utilisées pour les opérations CRUD, les opérations de requête, les opérations de transaction, etc. Dans le même temps, il prend également en charge une variété de moteurs de bases de données et de types de données pour répondre à divers besoins.

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