What’s the difference?
@mincerray self.db_set works on specific doctype for example you have the doctype object as doc you use the command to set value in that doctype as (doc.db_set(“price”,50))
frappe.set_value works on any doctype without the need to fetch the object itself so you just use it anytime anywhere and of course on your risk . example frappe.db.set_value(“Sales Invoice”,name,“price”,50). here you have to mention the doctype and the doctype name .
also the prefix db_ mean that the operation will bypass python api, im not sure but i think this will write the value directly to the DB without tregering any doctype hooks like before_save etc. also there is no need to call doc.save() but not sure
I think the frappe.db.set_value does not run the python methods too such as validate()