frappe.db.get_list(doctype, filters, or_filters, fields, order_by, group_by, start, page_length)
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(doctype, filters, or_filters, fields, order_by, group_by, start, page_length)
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(doctype, name, fieldname)
or frappe.db.get_value(doctype, filters, fieldname)
frappe.get_value
et frappe.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(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(doctype, name, fieldname, value)
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(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(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(doctype, filters)
Supprime un enregistrement d'un doctype
correspondant aux filtres passés.
frappe.db.delete('Task', {
'status': 'Cancelled'
})
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 type
POST
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()
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.