TinyDB est une base de données légère écrite uniquement en Python.

WBOY
Libérer: 2023-05-15 13:19:06
avant
1283 Les gens l'ont consulté

TinyDB 一个纯Python编写的轻量级数据库

TinyDB est une base de données légère écrite en Python pur, avec seulement 1800 lignes de code au total et aucune dépendance externe.

Le but de TinyDB est de réduire la difficulté d'utilisation des bases de données pour les petites applications Python. Pour certains programmes simples, au lieu d'utiliser des bases de données SQL, il est préférable d'utiliser TinyDB car il présente les caractéristiques suivantes :

  • Léger : L'actuel. le code source contient 1 800 lignes de code (environ 40 % de la documentation) et 1 600 lignes de code de test.
  • Peut être migré à volonté : le fichier de base de données est généré dans le dossier actuel, aucun service n'est requis et peut être migré à volonté.
  • Simplicité : TinyDB facilite l'utilisation des utilisateurs en fournissant une API simple et propre.
  • Écrit en Python pur : TinyDB ne nécessite ni serveur externe ni aucune dépendance de PyPI.
  • Fonctionne avec Python 3.6+ et PyPy3 : TinyDB fonctionne avec toutes les versions modernes de Python et PyPy.
  • Puissante évolutivité : vous pouvez facilement étendre TinyDB en écrivant un middleware pour modifier le comportement du stockage.
  • Couverture des tests à 100 % : aucune explication nécessaire.

1. Préparation

Avant de commencer, vous devez vous assurer que Python et pip ont été installés avec succès sur votre ordinateur.

Veuillez choisir l'une des méthodes suivantes pour saisir la commande permettant d'installer les dépendances :

1. Environnement Windows Ouvrez Cmd (Démarrer-Exécuter-CMD).

2. Environnement MacOS Ouvrez Terminal (commande + espace pour entrer dans le Terminal).

3. Si vous utilisez l'éditeur VSCode ou Pycharm, vous pouvez utiliser directement le terminal en bas de l'interface.

pip install tinydb
Copier après la connexion

2 Exemple simple d'ajout, de suppression, de modification et de vérification

Initialiser un fichier DB :

from tinydb import TinyDB
db = TinyDB('db.json')
Copier après la connexion

. De cette façon, ce sera dans le dossier actuel. Un fichier de base de données nommé « db.json » est généré ci-dessous.

Insérez des données dedans :

from tinydb import TinyDB
db = TinyDB('db.json')
db.insert({'type': 'apple', 'count': 7})
db.insert({'type': 'peach', 'count': 3})
Copier après la connexion

Comme vous pouvez le voir, nous pouvons directement insérer des données de dictionnaire dans la base de données sans aucun traitement. Voici la méthode d'insertion par lots :

db.insert_multiple([
 {'name': 'John', 'age': 22},
 {'name': 'John', 'age': 37}])
db.insert_multiple({'int': 1, 'value': i} for i in range(2))
Copier après la connexion

Interroger toutes les données :

from tinydb import TinyDB
db = TinyDB('db.json')
db.all()
# [{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]
Copier après la connexion

En plus de .all(), nous pouvons également utiliser une boucle for pour parcourir la base de données :

from tinydb import TinyDB
db = TinyDB('db.json')
for item in db:
 print(item)
# {'count': 7, 'type': 'apple'}
# {'count': 3, 'type': 'peach'}
Copier après la connexion

Si vous devez rechercher des données spécifiques, vous peut utiliser Query() :

from tinydb import TinyDB
db = TinyDB('db.json')
Fruit = Query()
db.search(Fruit.type == 'peach')
# [{'count': 3, 'type': 'peach'}]
db.search(Fruit.count > 5)
# [{'count': 7, 'type': 'apple'}]
Copier après la connexion

Mettre à jour les données :

from tinydb import TinyDB
db = TinyDB('db.json')
db.update({'foo': 'bar'})
# 删除某个Key
from tinydb.operations import delete
db.update(delete('key1'), User.name == 'John')
Copier après la connexion

Supprimer les données :

Vous pouvez également utiliser des instructions conditionnelles similaires pour supprimer des données :

from tinydb import TinyDB
db = TinyDB('db.json')
db.remove(Fruit.count < 5)
db.all()
# [{'count': 10, 'type': 'apple'}]
Copier après la connexion

Effacer toute la base de données :

from tinydb import TinyDB
db = TinyDB('db.json')
db.truncate()
db.all()
# []
Copier après la connexion

Requête avancée

En plus. aux opérateurs point pour accéder aux données, vous pouvez également utiliser la notation native d'accès Dict :

# 写法1
db.search(User.country-code == 'foo')
# 写法2
db.search(User['country-code'] == 'foo')
Copier après la connexion

Ces deux méthodes d'écriture sont équivalentes.

En plus des opérateurs de requête courants (==, <, >, ...), TinyDB prend également en charge l'instruction Where :

from tinydb import where
db.search(where('field') == 'value')
Copier après la connexion

Cela équivaut à :

db.search(Query()['field'] == 'value')
Copier après la connexion

Cette syntaxe peut également accéder aux champs imbriqués :

db.search(where('birthday').year == 1900)
# 或者
db.search(where('birthday')['year'] == 1900)
Copier après la connexion

Any méthode de requête :

db.search(Group.permissions.any(Permission.type == 'read'))
# [{'name': 'user', 'permissions': [{'type': 'read'}]},
# {'name': 'sudo', 'permissions': [{'type': 'read'}, {'type': 'sudo'}]},
# {'name': 'admin', 'permissions':
# [{'type': 'read'}, {'type': 'write'}, {'type': 'sudo'}]}]
Copier après la connexion

Vérifiez si un seul élément est inclus dans la liste :

db.search(User.name.one_of(['jane', 'john']))
Copier après la connexion

TinyDB prend également en charge les opérations logiques similaires à Pandas :

# Negate a query:
db.search(~ (User.name == 'John'))
# Logical AND:
db.search((User.name == 'John') & (User.age <= 30))
# Logical OR:
db.search((User.name == 'John') | (User.name == 'Bob'))
Copier après la connexion

L'introduction de TinyDB est ici, vous pouvez également visiter leur documentation officielle pour voir Plus de méthodes d'utilisation :

​https://www.php.cn/link/8ff3fdef6f5144f50eb2a83cd34baa5d​​​

Surtout pour les étudiants qui souhaitent optimiser le stockage basé sur TinyDB, vous pouvez lire en détail le chapitre Stockage et middleware .

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:51cto.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