API Base de données
frappe.db.get_list
frappe.db.get_list(doctype, filters, or_filters, fields, order_by, group_by, start, page_length)
- Vous pouvez également utiliser l'alias
frappe.get_list
Retourne une liste de document d'une table de doctype
. Il s'agit d'un habillage pour une requête SELECT
.
Prend également en compte les autorisations de l'utilisateur de la session.
frappe.db.get_list('Task',
filters={
'status': 'Open'
},
fields=['subject', 'date'],
order_by='date desc',
start=10,
page_length=20,
as_list=True
)
# résultat
(('Mettre à jour le branding et le design', '2020-09-04'),
('Documentation manquante', '2020-09-02'),
('Levée de fonds pour la fondation', '2020-09-03'))
# Tâches avec une date après le 08/09/2020
frappe.db.get_list('Task', filters={
'date': ['>', '2019-09-08']
})
# Tâches avec un sujet contenant le mot "test"
frappe.db.get_list('Task', filters={
'subject': ['like', '%test%']
})
# Compter le nombre de tâches groupées par statut
frappe.db.get_list('Task',
fields=['count(name) as count', 'status'],
group_by='status'
)
# résultat
[{'count': 1, 'status': 'Working'},
{'count': 2, 'status': 'Overdue'},
{'count': 2, 'status': 'Open'},
{'count': 1, 'status': 'Filed'},
{'count': 20, 'status': 'Completed'},
{'count': 1, 'status': 'Cancelled'}]
frappe.db.get_all
frappe.db.get_all(doctype, filters, or_filters, fields, order_by, group_by, start, page_length)
- Vous pouvez également utiliser l'alias
frappe.get_all
Identique à frappe.db.get_list
mais récupèrera les entrées sans prendre en compte les autorisations de l'utilisateur de la session.
frappe.db.get_value
frappe.db.get_value(doctype, name, fieldname)
or frappe.db.get_value(doctype, filters, fieldname)
- Vous pouvez également utiliser les alias
frappe.get_value
etfrappe.db.get_values
Retourne la valeur d'un champ d'un document ou une liste de valeurs.
# valeur simple
sujet = frappe.db.get_value('Task', 'TASK00002', 'subject')
# valeurs multiples
sujet, description = frappe.db.get_value('Task', 'TASK00002', ['subject', 'description'])
# dictionnaire
task_dict = frappe.db.get_value('Task', 'TASK00002', ['subject', 'description'], as_dict=1)
task_dict.subject
task_dict.description
# avec des filtres, retourne la première entrée correpondant à ces filtres
subject, description = frappe.db.get_value('Task', {'status': 'Open'}, ['subject', 'description'])
frappe.db.get_single_value
frappe.db.get_single_value(doctype, fieldname)
Retourne une valeur de champ d'une type de document unique.
timezone = frappe.db.get_single_value('System Settings', 'timezone')
frappe.db.set_value
frappe.db.set_value(doctype, name, fieldname, value)
- Vous pouvez également utiliser l'alias
frappe.db.update
Renseigne la valeur d'un champ dans la base de donnée, n'appelle par les logiques de l'ORM mais mets à jour l'horodatage modifié (sauf si explicitement contre-indiqué).
# mise à jour de la valeur d'un champ
frappe.db.set_value('Task', 'TASK00002', 'subject', 'New Subject')
# mise à jour de la valeur de plusieurs champ
frappe.db.set_value('Task', 'TASK00002', {
'subject': 'New Subject',
'description': 'New Description'
})
# mise à jour dans modifier l'horodatage
frappe.db.set_value('Task', 'TASK00002', 'subject', 'New Subject', update_modified=False)
Cette méthode ne déclenchera les logiques associées à l'ORM comme
validate
eton_update
.
Utilisez cette méthod pour mettre à jour des champs cachés ou si vous êtes certains de ce que vous faites.
frappe.db.exists
frappe.db.exists(doctype, name)
Renvoi true
si l'enregistrement existe.
# vérifie si un enregistrement existe grâce à son nom
frappe.db.exists('Task', 'TASK00002') # True
# vérifie si un enregistrement existe grâce à des filtres
frappe.db.exists({
'doctype': 'Task',
'status': 'Open',
'subject': 'New Task'
})
frappe.db.count
frappe.db.count(doctype, filters)
Renvoi le nombre d'enregistrements pour un doctype
et des filtres
donnés.
# nombre total de Tâches
frappe.db.count('Task')
# nombre total de tâches ouvertes
frappe.db.count('Task', {'status': 'Open'})
frappe.db.delete
frappe.db.delete(doctype, filters)
Supprime un enregistrement d'un doctype
correspondant aux filtres passés.
frappe.db.delete('Task', {
'status': 'Cancelled'
})
frappe.db.commit
frappe.db.commit()
Valide la transaction en cours. Déclenche la requête SQL COMMIT
.
Dodock lancera automatiquement
frappe.db.commit()
à la fin d'une requête web de typePOST
ouPUT
réussie. Par contre elle ne sera pas lancée pour les requêtesGET
.Vous n'avez pas besoin d'appeler cette méthode explicitement la plupart du temps, mais vous pouvez l'appeler pour valider vos transactions en plusieurs fois.
frappe.db.rollback
frappe.db.rollback()
Rollback de la transaction en cours. Déclenche la requête SQL ROLLBACK
.
Doock va automatiquement déclencher
frappe.db.rollback()
si une exception est générée pendant une requête web de typePOST
ouPUT
. Utilisez cette méthode si vous avez besoin de faire un rollback plus tôt dans une transaction.
API de documents
L'API de documents donne accès aux instances de types de documents Dodock. Chaque instance est dérivée de la classe frappe.model.Document et représente une entrée unique dans la table correspondante de la base de données.
API Rest
Le modèle applicatif Dodock crée de nouveaux points de terminaison REST pour chaque type de document (DocType) créé dans le système. Vous pouvez aussi accèder aux méthodes python via leur chemin en pointillé en leur ajoutant un décorateur "whitelist".