Maison > Article > développement back-end > Framework ORM Tortoise ORM en Python en pratique
Tortoise ORM est un framework ORM asynchrone développé sur la base du langage Python et peut être utilisé pour gérer des bases de données relationnelles dans des applications asynchrones Python.
Cet article expliquera comment utiliser le framework Tortoise ORM pour créer, lire, mettre à jour et supprimer des données. Vous apprendrez également à effectuer des requêtes simples et complexes à partir d'une base de données relationnelle.
Préparation
Avant de commencer ce tutoriel, vous devez installer Python (Python3.6+ est recommandé) et installer le framework Tortoise ORM.
Vous pouvez installer le framework Tortoise ORM via pip en utilisant la commande suivante :
pip install tortoise-orm
Ensuite, nous configurerons la base de données et la structure du modèle.
Créer une connexion à la base de données
Utiliser Tortoise ORM pour effectuer des opérations de base de données nécessite d'abord de se connecter à la base de données. Dans ce tutoriel, nous utiliserons une base de données SQLite.
Tortoise ORM utilise des variables d'environnement ou des fichiers .config pour gérer les informations de connexion à la base de données. Créez un fichier nommé .env
et la configuration suivante pour établir la connexion à la base de données. .env
的文件和以下配置,可以实现数据库连接。
DATABASE_URL=sqlite://db.sqlite3
其中db.sqlite3
是你所要创建的新数据库的文件名。
同时,我们还需要在代码中使用函数来初始化Tortoise ORM:
import os from dotenv import load_dotenv from tortoise import Tortoise # 加载环境变量 load_dotenv() async def init_db(): await Tortoise.init(config={ 'connections': { 'default': os.getenv('DATABASE_URL') }, 'apps': { 'models': { 'models': ['app.models',], 'default_connection': 'default' } } }) await Tortoise.generate_schemas()
在上面的代码中我们使用环境变量获取数据库连接信息,并传递给Tortoise ORM进行初始化。接着调用Tortoise.generate_schemas()
方法来为所定义的模型生成对应的数据表。
在完成上述操作后,我们就可以开始创建模型。
创建模型
在本教程中,我们将创建一个简单的博客模型,该模型包含标题、内容、创建时间、更新时间和作者。
from tortoise import fields from tortoise.models import Model class Blog(Model): id = fields.IntField(pk=True) title = fields.CharField(max_length=100) content = fields.TextField() created_at = fields.DatetimeField(auto_now_add=True) updated_at = fields.DatetimeField(auto_now=True) author = fields.CharField(max_length=100)
在上面的代码的Blog模型中,我们使用Model
基类并创建了一些字段id
、title
、content
、created_at
、updated_at
和author
。pk=True
指明了id
字段是主键。auto_now_add=True
和auto_now=True
分别指明了created_at
和updated_at
字段应该在创建和更新时自动更新。
现在,我们已经成功定义了一个模型,接下来学习如何使用Tortoise ORM进行CRUD操作。
读取和创建数据
使用Tortoise ORM读取和创建数据非常简单,以下是一些示例代码:
from app.models import Blog # 创建一个新博客 blog = await Blog.create(title='Tortoise ORM', content='使用Tortoise ORM操作数据库非常方便', author='Alice') # 读取所有博客 blogs = await Blog.all() for blog in blogs: print(blog.title) # 根据标题读取指定博客 blog = await Blog.get(title='Tortoise ORM') print(blog.content)
在上面的代码中,我们使用了Blog.create()
方法创建了一个新博客,使用Blog.all()
方法读取了所有博客,并使用Blog.get()
方法根据标题读取了指定的博客。
更新和删除数据
Tortoise ORM也提供了更新和删除数据的方法。以下是一些示例代码:
# 更新博客的内容 blog.content = 'Tortoise ORM提供了丰富的API来管理数据库' await blog.save() # 删除指定的博客 await Blog.filter(title='Tortoise ORM').delete()
在上面的代码中,我们使用save()
方法更新了博客的内容,并使用filter()
和delete()
方法根据标题删除了指定的博客。
执行复杂查询
除了基本的CRUD操作,Tortoise ORM还允许执行复杂的查询。以下是一些示例:
# 使用where子句查询特定日期创建的博客 blogs = await Blog.filter(created_at__date='2021-07-12').all() # 使用order_by子句将博客按更新日期升序排列 blogs = await Blog.all().order_by('updated_at') # 连接多个过滤器查询具有特定条件的博客 blogs = await Blog.all().filter(title__contains='ORM', author__icontains='Alice')
在上面的代码中,我们使用了filter()
、all()
和order_by()
方法结合一些查询参数,例如。created_at__date
、title__contains
和author__icontains
rrreee
db.sqlite3
est le nom de fichier de la nouvelle base de données que vous souhaitez créer. En même temps, nous devons également utiliser une fonction dans le code pour initialiser Tortoise ORM : rrreee
Dans le code ci-dessus, nous utilisons des variables d'environnement pour obtenir les informations de connexion à la base de données et les transmettons à Tortoise ORM pour l'initialisation. Appelez ensuite la méthodeTortoise.generate_schemas()
pour générer la table de données correspondante pour le modèle défini. 🎜🎜Après avoir terminé les opérations ci-dessus, nous pouvons commencer à créer le modèle. 🎜🎜Créer un modèle🎜🎜Dans ce didacticiel, nous allons créer un modèle de blog simple qui contient le titre, le contenu, l'heure de création, l'heure de mise à jour et l'auteur. 🎜rrreee🎜Dans le modèle Blog du code ci-dessus, nous utilisons la classe de base Model
et créons des champs id
, title
, content
, created_at
, updated_at
et author
. pk=True
spécifie que le champ id
est la clé primaire. auto_now_add=True
et auto_now=True
spécifient que les champs created_at
et updated_at
doivent être automatiquement mis à jour lors de leur création et de leur mise à jour. respectivement. 🎜🎜Maintenant que nous avons défini avec succès un modèle, apprenons à utiliser Tortoise ORM pour les opérations CRUD. 🎜🎜Lecture et création de données🎜🎜La lecture et la création de données à l'aide de Tortoise ORM est très simple, voici un exemple de code : 🎜rrreee🎜Dans le code ci-dessus, nous avons utilisé Blog.create()
La méthode crée un nouveau blog, utilise la méthode Blog.all()
pour lire tous les blogs et utilise la méthode Blog.get()
pour lire le blog spécifié en fonction du titre. . 🎜🎜Mettre à jour et supprimer des données🎜🎜Tortoise ORM fournit également des méthodes pour mettre à jour et supprimer des données. Voici un exemple de code : 🎜rrreee🎜 Dans le code ci-dessus, nous avons mis à jour le contenu du blog en utilisant la méthode save()
et avons utilisé filter()
et La méthode delete()
supprime le blog spécifié en fonction du titre. 🎜🎜Exécuter des requêtes complexes🎜🎜En plus des opérations CRUD de base, Tortoise ORM permet également d'exécuter des requêtes complexes. Voici quelques exemples : 🎜rrreee🎜Dans le code ci-dessus, nous avons utilisé les méthodes filter()
, all()
et order_by()
Combiné avec certains paramètres de requête, par exemple. created_at__date
, title__contains
et author__icontains
, etc., pour effectuer des requêtes complexes. 🎜🎜Conclusion🎜🎜Dans ce didacticiel, nous avons appris à utiliser le framework Tortoise ORM pour implémenter des opérations CRUD, initialiser la base de données, créer des modèles et effectuer des requêtes de base de données complexes. Comme nous pouvons le voir, Tortoise ORM rend la gestion des bases de données dans les applications asynchrones Python très simple et intuitive. 🎜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!