Maison > développement back-end > Tutoriel Python > Explication détaillée des bases de données du framework ORM en Python

Explication détaillée des bases de données du framework ORM en Python

WBOY
Libérer: 2023-06-11 13:34:37
original
2307 Les gens l'ont consulté

Ces dernières années, Python est devenu de plus en plus populaire dans le domaine du développement en tant que langage de programmation facile à apprendre, à utiliser et extrêmement flexible. Dans les applications Python, le framework ORM (Object-Relational Mapping) joue un rôle crucial, qui améliore non seulement considérablement l'efficacité du développement, mais facilite également la gestion des données et des objets par les développeurs.

Dans le framework ORM, la bibliothèque Databases est une bibliothèque Python émergente qui est souvent utilisée pour accéder aux bases de données relationnelles pendant le processus de développement. Bien que cette bibliothèque soit encore relativement nouvelle dans le monde du développement Python, elle a déjà montré un grand potentiel. Par conséquent, dans cet article, nous présenterons en détail la bibliothèque de bases de données pour aider les développeurs à mieux comprendre et apprendre ce puissant framework Python ORM.

1. Contexte du développement de bases de données

La bibliothèque Databases est une bibliothèque Python légère utilisée pour simplifier le développement de bases de données SQL asynchrones. Il utilise asyncio pour la programmation asynchrone et peut fonctionner avec une variété de moteurs de bases de données SQL, tels que PostgreSQL, MySQL, MariaDB, SQLite, etc. De plus, la bibliothèque de bases de données fournit également une API très concise et facile à utiliser.

L'objectif de la bibliothèque Databases est de permettre aux développeurs de créer des applications plus rapidement et d'éliminer beaucoup de code répétitif. Il fonctionne très bien en termes de performances et fournit des fonctionnalités avancées telles que le regroupement de connexions, la gestion des transactions, ainsi que de nombreuses améliorations du pilote asynchrone et une documentation d'aide. Par conséquent, la bibliothèque Databases est sans aucun doute un très bon choix pour les microservices complexes ou les grandes applications Web qui nécessitent un accès collaboratif aux bases de données SQL.

2. Fonctions principales des bases de données

L'objectif de conception de la bibliothèque de bases de données est de permettre aux développeurs d'utiliser des API simples pour obtenir une interaction rapide avec les bases de données SQL. Ci-dessous, nous présenterons quelques fonctions principales de la bibliothèque Databases :

1 Le code est concis et clair

La bibliothèque Databases utilise la syntaxe concise de Python pour maximiser l'efficacité du développement des développeurs. Il peut implémenter toutes les fonctionnalités avancées de Python telles que les opérations asynchrones et simultanées.

Par exemple, le code suivant crée une table nommée "users". Parmi eux, plusieurs attributs du tableau incluent l'ID, le nom, l'âge et l'e-mail.

import databases

database = databases.Database("sqlite:///example.db")

query = "CREATE TABLE users (ID INT PRIMARY KEY, Name TEXT, Age INT, Email TEXT)"

await database.execute(query=query)
Copier après la connexion

2. API client et serveur de collaboration

La bibliothèque de bases de données fournit une API de haut niveau, qui inclut des opérations asynchrones et synchrones, afin que nous puissions l'utiliser. Ces opérations sont unifiées.

import database

database = databases.Database("sqlite:///example.db")

# 异步操作(async)
async with database.transaction():
   query = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query, values=values)

# 同步操作
query = "SELECT * FROM users WHERE ID=:id"
values = {"id": 1}
result = database.fetch_one(query=query, values=values)
Copier après la connexion

3. Pool de connexions

La bibliothèque de bases de données peut facilement gérer les problèmes de pool de connexions et améliorer l'efficacité de l'accès aux bases de données. Lorsque les développeurs utilisent la bibliothèque Databases, il leur suffit de spécifier la taille du pool de connexions pour mettre en œuvre facilement des connexions automatisées sans avoir à gérer manuellement les connexions, ce qui est très pratique.

Par exemple, dans le code suivant, on peut préciser le nombre maximum de connexions et le nombre minimum de connexions, afin que la bibliothèque Databases puisse mieux gérer le pool de connexions.

import databases

database = databases.Database("sqlite:///example.db", min_size=1, max_size=10)
Copier après la connexion

4. Gestion des transactions

La bibliothèque de bases de données fournit une gestion intégrée des transactions pour garantir la cohérence et la fiabilité lors de l'exécution des opérations. Les transactions sont une fonctionnalité très importante du SGBD qui permet aux développeurs d'effectuer des opérations par lots.

Par exemple, dans le code ci-dessous, nous pouvons traiter les données de manière collaborative en démarrant et en validant des transactions de manière asynchrone.

import databases

database = databases.Database("sqlite:///example.db")

async with database.transaction():
   query_1 = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values_1 = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query_1, values=values_1)

   query_2 = "UPDATE users SET Age=:age WHERE ID=:id"
   values_2 = {"age": 25, "id": 1}
   await database.execute(query=query_2, values=values_2)

await database.commit()
Copier après la connexion

5. Prend en charge plusieurs moteurs de bases de données

La bibliothèque de bases de données prend en charge plusieurs moteurs de bases de données courants, notamment MySQL, PostgreSQL, MariaDB, etc. Cela nous permet de créer facilement l’environnement de base de données que nous souhaitons.

Par exemple, si nous avons l'extrait de code suivant, nous pouvons choisir notre moteur de base de données couramment utilisé en fonction de nos besoins.

import databases

database = databases.Database("postgresql://user:[email protected]:5432/example")

三、使用Databases库

在学习使用Databases库之前,我们需要先进行库的安装工作。

1.安装Databases库

我们可以通过以下命令安装Databases库:
Copier après la connexion

pip installer des bases de données

2.创建数据库连接

要使用Databases库,我们首先需要通过URL字符串为我们的PHP应用程序创建一个与数据库引擎的连接。
Copier après la connexion

importer des bases de données
à partir de bases de données importer une base de données

database = Database("sqlite:///example .db")

3.查询数据

Databases库提供了8个异步和同步函数,可用于查询数据库: `fetch_all()`,`fetch_one()`, `fetch_val()`, `fetch_many()`, `fetch_optional()`, `execute()`, `execute_many()`和`iterate()`
Copier après la connexion

Interroger toutes les lignes

result = database.fetch_all("SELECT * FROM users")

Interroger la première ligne de data

result = database.fetch_one("SELECT * FROM users WHERE ID=:id", value = {"id": 1})

Obtenir les données cellulaires#🎜 🎜#

result = database.fetch_val("SELECT Name FROM users WHERE ID=:id", value = {"id": 1})

Obtenir plusieurs lignes de données#🎜🎜 #

result = database.fetch_many(query="SELECT * FROM users",values=[{'id':1}, {'id':2})

Si les données ne renvoie aucun

result = database.fetch_optional(query="SELECT * FROM users WHERE ID=:id", value={"id": 3})

Exécuter N'importe quelle requête (renvoie le nombre de lignes insérées)

result = wait database.execute("INSERT INTO users (ID,Name,Age,Email) VALUES (:id,:name,:age, :email )",value={"id":5, "name":"John","age":25,"email":"[email protected]"})

Exécuter dans mode batch Toute requête (renvoie le nombre de lignes insérées)

result = wait database.execute_many("INSERT INTO users (ID,Name,Age,Email) VALUES (:id,:name,:age ,:email )",values=[{"id":5, "name":"John","age":25,"email":"[email protected]"},{"id":6," name": "Jack", "age":26,"email":"[email protected]"}])

Utiliser des itérateurs asynchrones pour traiter les données

async avec database.connection () as connection:

async with connection.transaction():

   async for row in connection.iterate(query="SELECT * FROM users"):
      print(row)
Copier après la connexion
4.使用事务

Databases库还提供了事务管理的机制。我们可以使用异步with语句来绑定事务。如果with语句内的所有操作成功完成,则会提交事务。否则,事务将被回滚。
Copier après la connexion

async with database.transaction(): query = "INSERT INTO users (ID, Nom, Âge, Email) VALEURS (:id,:name,:age,:email)"

value = {"id": 5, "name": "Hassen", "age": 26, "email ": " [email protégé]"}
wait database.execute(requête, valeurs)

query = "INSERT INTO user1 (ID,Name,Age,Email) VALUES (:id,:name,:age,:email)"
value = {"id": 6, "name" : "Fatima", "age": 22, "email": "[email protected]"}
wait database.execute(query, valeurs)

Ce qui précède est la bibliothèque de bases de données dans Python ORM Introduction détaillée dans le framework. La bibliothèque Databases est un framework Python ORM de nouvelle génération. Il possède de nombreuses fonctionnalités excellentes, telles que l'optimisation de code concis, les opérations de communication asynchrones, les pools de connexions, etc., qui peuvent considérablement améliorer l'efficacité du développement des développeurs et promouvoir ses excellentes performances. Bien que la bibliothèque Databases soit encore relativement nouvelle dans le monde du développement Python, elle attire de plus en plus l’attention et la reconnaissance de la communauté. Nous pensons que cette bibliothèque jouera un rôle de plus en plus important dans le futur travail des développeurs Python.

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!

Étiquettes associées:
source:php.cn
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