Conseils pratiques Python SQLAlchemy : du novice à l'expert

王林
Libérer: 2024-02-25 08:00:57
avant
778 Les gens l'ont consulté

Python SQLAlchemy 实战秘籍:从新手到专家

sqlIntroduction à l'alchimie

SQLAlchemy est un open source Object Relational Mapping (ORM) outil dans python, qui peut vous aider à mapper facilement des objets Python à des tables dans base de données grâce à un simple code Python pour fonctionner sur la base de données . SQLAlchemy prend en charge une variété de bases de données, notamment Mysql, postgresql, SQLite, etc.

Utilisation de base de SQLAlchemy

1. Installez SQLAlchemy

Tout d’abord, vous devez installer SQLAlchemy dans votre environnement Python. Vous pouvez l'installer à l'aide de la commande suivante :

pip install sqlalchemy
Copier après la connexion

2. Créer un moteur de base de données

Avant d'utiliser SQLAlchemy, vous devez d'abord créer un moteur de base de données. Le moteur de base de données est l'interface que SQLAlchemy utilise pour communiquer avec la base de données. Vous pouvez utiliser le code suivant pour créer un moteur de base de données :

from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://user:passWord@host:port/database")
Copier après la connexion

Parmi eux, mysql+pymysql 是数据库的类型,userpasswordhostportdatabase se trouvent respectivement le nom d'utilisateur, le mot de passe, l'hôte, le numéro de port et le nom de la base de données.

3. Créer une session

Session est l'objet utilisé par SQLAlchemy pour interagir avec la base de données. Vous pouvez utiliser le code suivant pour créer une session :

Session = sessionmaker(bind=engine)
session = Session()
Copier après la connexion

4. Base de données des opérations

Vous pouvez utiliser des sessions pour effectuer diverses opérations sur la base de données, telles que des requêtes, des insertions, des mises à jour et des suppressions. Voici quelques opérations couramment utilisées :

4.1 Données de requête

Vous pouvez utiliser le code suivant pour interroger les données :

results = session.query(User).filter(User.name == "John").all()
Copier après la connexion

Parmi elles, la méthode User 是您要查询的表,filter() 方法用于过滤查询结果,all() est utilisée pour obtenir tous les résultats de requête.

4.2 Insérer des données

Vous pouvez utiliser le code suivant pour insérer des données :

new_user = User(name="John", age=30)
session.add(new_user)
session.commit()
Copier après la connexion

Parmi elles, la méthode User 是您要插入数据的表,new_user 是您要插入的新数据,add() 方法用于将新数据添加到会话中,commit() est utilisée pour valider toutes les modifications dans la session.

4.3 Mettre à jour les données

Vous pouvez utiliser le code suivant pour mettre à jour les données :

user = session.query(User).filter(User.name == "John").first()
user.age = 31
session.commit()
Copier après la connexion

Parmi elles, la méthode User 是您要更新数据的表,filter() 方法用于过滤查询结果,first() 方法用于获取第一个查询结果,age 是您要更新的字段,commit() est utilisée pour valider toutes les modifications dans la session.

4.4 Supprimer les données

Vous pouvez utiliser le code suivant pour supprimer des données :

user = session.query(User).filter(User.name == "John").first()
session.delete(user)
session.commit()
Copier après la connexion

Parmi elles, la méthode User 是您要删除数据的表,filter() 方法用于过滤查询结果,first() 方法用于获取第一个查询结果,delete() 方法用于删除数据,commit() est utilisée pour valider toutes les modifications dans la session.

Utilisation avancée de SQLAlchemy

1. Cartographie des relations

SQLAlchemy vous aide à mapper facilement des objets Python aux tables de votre base de données. Vous pouvez utiliser le code suivant pour définir une carte relationnelle :

class User(Base):
__tablename__ = "user"

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

class Address(Base):
__tablename__ = "address"

id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("user.id"))
address = Column(String(100))

# 创建关系映射
User.addresses = relationship("Address", back_populates="user")
Address.user = relationship("User", back_populates="addresses")
Copier après la connexion

Parmi elles, la fonction UserAddress 是您要映射的两个表,__tablename__ 属性指定了表的名称,id 属性指定了主键,nameageaddress 属性指定了表的字段。ForeignKey() 函数用于指定外键关系。relationship() est utilisée pour définir la cartographie des relations.

2. RequêteOptimisation

SQLAlchemy fournit une variété de techniques d'optimisation des requêtes qui peuvent vous aider à améliorer les performances des requêtes. Voici quelques techniques d'optimisation des requêtes couramment utilisées :

2.1 Requête par lots

Vous pouvez utiliser des requêtes par lots pour améliorer les performances des requêtes. La requête par lots peut interroger plusieurs lignes de données à la fois. Vous pouvez utiliser le code suivant pour effectuer des requêtes par lots :

users = session.query(User).filter(User.age > 18).all()
Copier après la connexion

Parmi elles, la méthode User 是您要查询的表,filter() 方法用于过滤查询结果,all() est utilisée pour obtenir tous les résultats de requête.

2.2 Utilisation de index

Vous pouvez utiliser des index pour améliorer les performances des requêtes. Les index aident la base de données à trouver rapidement les données que vous souhaitez interroger. Vous pouvez utiliser le code suivant pour créer un index :

session.execute("CREATE INDEX idx_user_age ON user (age)")
Copier après la connexion

user 是您要创建索引的表,age est le champ que vous souhaitez indexer.

3. AffairesGestion

SQLAlchemy prend en charge la gestion des transactions. Les transactions vous aident à garantir que les opérations de base de données réussissent toutes ou échouent toutes. Vous pouvez utiliser le code suivant pour démarrer une transaction :

session.begin()
Copier après la connexion

Vous pouvez utiliser le code suivant pour soumettre une transaction :

session.commit()
Copier après la connexion

您可以使用以下代码来回滚一个事务:

session.rollback()
Copier après la connexion

结语

SQLAlchemy 是一个功能强大且易于使用的 ORM 工具。它可以帮助您轻松地将 Python 对象与数据库中的表进行映射,并通过简单的 Python 代码来对数据库进行操作。本文介绍了 SQLAlchemy 的基本使用和进阶使用。希望您能通过本文学习到 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!

source:lsjlt.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal