952 lines
No EOL
28 KiB
HTML
952 lines
No EOL
28 KiB
HTML
<!-- title: frappe.database --><div class="dev-header">
|
|
|
|
<a class="btn btn-default btn-sm" disabled style="margin-bottom: 10px;">
|
|
Version 6.x.x</a>
|
|
|
|
|
|
<a class="btn btn-default btn-sm" href="https://github.com/frappe/frappe/blob/develop/frappe/database.py"
|
|
target="_blank" style="margin-left: 10px; margin-bottom: 10px;"><i class="octicon octicon-mark-github"></i> Source</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3 style="font-weight: normal;">Class <b>Database</b></h3>
|
|
|
|
<div class="docs-attr-desc"><p>Open a database connection with the given parmeters, if use_default is True, use the
|
|
login details from <code>conf.py</code>. This is called by the request handler and is accessible using
|
|
the <code>db</code> global variable. the <code>sql</code> method is also global to run queries</p>
|
|
</div>
|
|
<div style="padding-left: 30px;">
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="__init__" href="#__init__" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>__init__</b>
|
|
<i class="text-muted">(self, host=None, user=None, password=None, ac_name=None, use_default=0)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="_get_value_for_many_names" href="#_get_value_for_many_names" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>_get_value_for_many_names</b>
|
|
<i class="text-muted">(self, doctype, names, field, debug=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="_get_values_from_table" href="#_get_values_from_table" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>_get_values_from_table</b>
|
|
<i class="text-muted">(self, fields, filters, doctype, as_dict, debug, order_by=None, update=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="a_row_exists" href="#a_row_exists" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>a_row_exists</b>
|
|
<i class="text-muted">(self, doctype)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns True if atleast one row exists.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="add_default" href="#add_default" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>add_default</b>
|
|
<i class="text-muted">(self, key, val, parent=__default, parenttype=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Append a default value for a key, there can be multiple default values for a particular key.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="add_index" href="#add_index" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>add_index</b>
|
|
<i class="text-muted">(self, doctype, fields, index_name=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Creates an index with given fields if not already created.
|
|
Index name will be <code>fieldname1_fieldname2_index</code></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="add_unique" href="#add_unique" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>add_unique</b>
|
|
<i class="text-muted">(self, doctype, fields, constraint_name=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="begin" href="#begin" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>begin</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="build_conditions" href="#build_conditions" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>build_conditions</b>
|
|
<i class="text-muted">(self, filters)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Convert filters sent as dict, lists to SQL conditions. filter's key
|
|
is passed by map function, build conditions like:</p>
|
|
|
|
<ul>
|
|
<li>ifnull(<code>fieldname</code>, default_value) = %(fieldname)s</li>
|
|
<li><code>fieldname</code> [=, !=, >, >=, <, <=] %(fieldname)s</li>
|
|
</ul>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="check_transaction_status" href="#check_transaction_status" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>check_transaction_status</b>
|
|
<i class="text-muted">(self, query)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Raises exception if more than 20,000 <code>INSERT</code>, <code>UPDATE</code> queries are
|
|
executed in one transaction. This is to ensure that writes are always flushed otherwise this
|
|
could cause the system to hang.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="close" href="#close" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>close</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Close database connection.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="commit" href="#commit" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>commit</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Commit current transaction. Calls SQL <code>COMMIT</code>.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="connect" href="#connect" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>connect</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Connects to a database as set in <code>site_config.json</code>.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="convert_to_lists" href="#convert_to_lists" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>convert_to_lists</b>
|
|
<i class="text-muted">(self, res, formatted=0, as_utf8=0)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Convert tuple output to lists (internal).</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="convert_to_simple_type" href="#convert_to_simple_type" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>convert_to_simple_type</b>
|
|
<i class="text-muted">(self, v, formatted=0)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Format date, time, longint values.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="convert_to_utf8" href="#convert_to_utf8" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>convert_to_utf8</b>
|
|
<i class="text-muted">(self, res, formatted=0)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Encode result as UTF-8.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="count" href="#count" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>count</b>
|
|
<i class="text-muted">(self, dt, filters=None, debug=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns <code>COUNT(*)</code> for given DocType and filters.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="escape" href="#escape" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>escape</b>
|
|
<i class="text-muted">(self, s)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Excape quotes and percent in given string.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="exists" href="#exists" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>exists</b>
|
|
<i class="text-muted">(self, dt, dn=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns true if document exists.</p>
|
|
|
|
<p><strong>Parameters:</strong></p>
|
|
|
|
<ul>
|
|
<li><strong><code>dt</code></strong> - DocType name.</li>
|
|
<li><strong><code>dn</code></strong> - Document name or filter dict.</li>
|
|
</ul>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="explain_query" href="#explain_query" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>explain_query</b>
|
|
<i class="text-muted">(self, query, values=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Print <code>EXPLAIN</code> in error log.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="fetch_as_dict" href="#fetch_as_dict" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>fetch_as_dict</b>
|
|
<i class="text-muted">(self, formatted=0, as_utf8=0)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Internal. Converts results to dict.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="field_exists" href="#field_exists" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>field_exists</b>
|
|
<i class="text-muted">(self, dt, fn)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Return true of field exists.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get" href="#get" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get</b>
|
|
<i class="text-muted">(self, doctype, filters=None, as_dict=True, cache=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns <code>get_value</code> with fieldname='*'</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_all" href="#get_all" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_all</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_creation_count" href="#get_creation_count" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_creation_count</b>
|
|
<i class="text-muted">(self, doctype, minutes)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Get count of records created in the last x minutes</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_db_login" href="#get_db_login" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_db_login</b>
|
|
<i class="text-muted">(self, ac_name)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_default" href="#get_default" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_default</b>
|
|
<i class="text-muted">(self, key, parent=__default)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns default value as a list if multiple or single</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_defaults" href="#get_defaults" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_defaults</b>
|
|
<i class="text-muted">(self, key=None, parent=__default)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Get all defaults</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_defaults_as_list" href="#get_defaults_as_list" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_defaults_as_list</b>
|
|
<i class="text-muted">(self, key, parent=__default)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns default values as a list.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_description" href="#get_description" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_description</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns result metadata.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_global" href="#get_global" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_global</b>
|
|
<i class="text-muted">(self, key, user=__global)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns a global key value.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_list" href="#get_list" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_list</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_single_value" href="#get_single_value" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_single_value</b>
|
|
<i class="text-muted">(self, doctype, fieldname, cache=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Get property of Single DocType. Cache locally by default</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_singles_dict" href="#get_singles_dict" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_singles_dict</b>
|
|
<i class="text-muted">(self, doctype)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Get Single DocType as dict.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_singles_value" href="#get_singles_value" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_singles_value</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Alias for get<em>single</em>value</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_table_columns" href="#get_table_columns" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_table_columns</b>
|
|
<i class="text-muted">(self, doctype)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns list of column names from given doctype.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_tables" href="#get_tables" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_tables</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><span class="text-muted">No docs</span></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_temp" href="#get_temp" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_temp</b>
|
|
<i class="text-muted">(self, key)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Return the temperory value and delete it.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_value" href="#get_value" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_value</b>
|
|
<i class="text-muted">(self, doctype, filters=None, fieldname=name, ignore=None, as_dict=False, debug=False, cache=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns a document property or list of properties.</p>
|
|
|
|
<p><strong>Parameters:</strong></p>
|
|
|
|
<ul>
|
|
<li><strong><code>doctype</code></strong> - DocType name.</li>
|
|
<li><strong><code>filters</code></strong> - Filters like <code>{"x":"y"}</code> or name of the document. <code>None</code> if Single DocType.</li>
|
|
<li><strong><code>fieldname</code></strong> - Column name.</li>
|
|
<li><strong><code>ignore</code></strong> - Don't raise exception if table, column is missing.</li>
|
|
<li><strong><code>as_dict</code></strong> - Return values as dict.</li>
|
|
<li><strong><code>debug</code></strong> - Print query in error log.</li>
|
|
</ul>
|
|
|
|
<p>Example:</p>
|
|
|
|
<pre><code># return first customer starting with a
|
|
frappe.db.get_value("Customer", {"name": ("like a%")})
|
|
|
|
# return last login of **User** `test@example.com`
|
|
frappe.db.get_value("User", "test@example.com", "last_login")
|
|
|
|
last_login, last_ip = frappe.db.get_value("User", "test@example.com",
|
|
["last_login", "last_ip"])
|
|
|
|
# returns default date_format
|
|
frappe.db.get_value("System Settings", None, "date_format")
|
|
</code></pre>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_values" href="#get_values" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_values</b>
|
|
<i class="text-muted">(self, doctype, filters=None, fieldname=name, ignore=None, as_dict=False, debug=False, order_by=None, update=None, cache=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns multiple document properties.</p>
|
|
|
|
<p><strong>Parameters:</strong></p>
|
|
|
|
<ul>
|
|
<li><strong><code>doctype</code></strong> - DocType name.</li>
|
|
<li><strong><code>filters</code></strong> - Filters like <code>{"x":"y"}</code> or name of the document.</li>
|
|
<li><strong><code>fieldname</code></strong> - Column name.</li>
|
|
<li><strong><code>ignore</code></strong> - Don't raise exception if table, column is missing.</li>
|
|
<li><strong><code>as_dict</code></strong> - Return values as dict.</li>
|
|
<li><strong><code>debug</code></strong> - Print query in error log.</li>
|
|
</ul>
|
|
|
|
<p>Example:</p>
|
|
|
|
<pre><code># return first customer starting with a
|
|
customers = frappe.db.get_values("Customer", {"name": ("like a%")})
|
|
|
|
# return last login of **User** `test@example.com`
|
|
user = frappe.db.get_values("User", "test@example.com", "*")[0]
|
|
</code></pre>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="get_values_from_single" href="#get_values_from_single" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>get_values_from_single</b>
|
|
<i class="text-muted">(self, fields, filters, doctype, as_dict=False, debug=False, update=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Get values from <code>tabSingles</code> (Single DocTypes) (internal).</p>
|
|
|
|
<p><strong>Parameters:</strong></p>
|
|
|
|
<ul>
|
|
<li><strong><code>fields</code></strong> - List of fields,</li>
|
|
<li><strong><code>filters</code></strong> - Filters (dict).</li>
|
|
<li><strong><code>doctype</code></strong> - DocType name.</li>
|
|
</ul>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="has_column" href="#has_column" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>has_column</b>
|
|
<i class="text-muted">(self, doctype, column)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns True if column exists in database.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="needs_formatting" href="#needs_formatting" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>needs_formatting</b>
|
|
<i class="text-muted">(self, result, formatted)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns true if the first row in the result has a Date, Datetime, Long Int.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="rollback" href="#rollback" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>rollback</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><code>ROLLBACK</code> current transaction.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="set" href="#set" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>set</b>
|
|
<i class="text-muted">(self, doc, field, val)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Set value in document. <strong>Avoid</strong></p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="set_default" href="#set_default" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>set_default</b>
|
|
<i class="text-muted">(self, key, val, parent=__default, parenttype=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Sets a global / user default value.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="set_global" href="#set_global" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>set_global</b>
|
|
<i class="text-muted">(self, key, val, user=__global)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Save a global key value. Global values will be automatically set if they match fieldname.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="set_temp" href="#set_temp" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>set_temp</b>
|
|
<i class="text-muted">(self, value)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Set a temperory value and return a key.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="set_value" href="#set_value" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>set_value</b>
|
|
<i class="text-muted">(self, dt, dn, field, val, modified=None, modified_by=None, update_modified=True, debug=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Set a single value in the database, do not call the ORM triggers
|
|
but update the modified timestamp (unless specified not to).</p>
|
|
|
|
<p><strong>Warning:</strong> this function will not call Document events and should be avoided in normal cases.</p>
|
|
|
|
<p><strong>Parameters:</strong></p>
|
|
|
|
<ul>
|
|
<li><strong><code>dt</code></strong> - DocType name.</li>
|
|
<li><strong><code>dn</code></strong> - Document name.</li>
|
|
<li><strong><code>field</code></strong> - Property / field name.</li>
|
|
<li><strong><code>value</code></strong> - Value to be updated.</li>
|
|
<li><strong><code>modified</code></strong> - Use this as the <code>modified</code> timestamp.</li>
|
|
<li><strong><code>modified_by</code></strong> - Set this user as <code>modified_by</code>.</li>
|
|
<li><strong><code>update_modified</code></strong> - default True. Set as false, if you don't want to update the timestamp.</li>
|
|
<li><strong><code>debug</code></strong> - Print the query in the developer / js console.</li>
|
|
</ul>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="sql" href="#sql" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>sql</b>
|
|
<i class="text-muted">(self, query, values=(), as_dict=0, as_list=0, formatted=0, debug=0, ignore_ddl=0, as_utf8=0, auto_commit=0, update=None)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Execute a SQL query and fetch all rows.</p>
|
|
|
|
<p><strong>Parameters:</strong></p>
|
|
|
|
<ul>
|
|
<li><strong><code>query</code></strong> - SQL query.</li>
|
|
<li><strong><code>values</code></strong> - List / dict of values to be escaped and substituted in the query.</li>
|
|
<li><strong><code>as_dict</code></strong> - Return as a dictionary.</li>
|
|
<li><strong><code>as_list</code></strong> - Always return as a list.</li>
|
|
<li><strong><code>formatted</code></strong> - Format values like date etc.</li>
|
|
<li><strong><code>debug</code></strong> - Print query and <code>EXPLAIN</code> in debug log.</li>
|
|
<li><strong><code>ignore_ddl</code></strong> - Catch exception if table, column missing.</li>
|
|
<li><strong><code>as_utf8</code></strong> - Encode values as UTF 8.</li>
|
|
<li><strong><code>auto_commit</code></strong> - Commit after executing the query.</li>
|
|
<li><strong><code>update</code></strong> - Update this dict to all rows (if returned <code>as_dict</code>).</li>
|
|
</ul>
|
|
|
|
<p>Examples:</p>
|
|
|
|
<pre><code># return customer names as dicts
|
|
frappe.db.sql("select name from tabCustomer", as_dict=True)
|
|
|
|
# return names beginning with a
|
|
frappe.db.sql("select name from tabCustomer where name like %s", "a%")
|
|
|
|
# values as dict
|
|
frappe.db.sql("select name from tabCustomer where name like %(name)s and owner=%(owner)s",
|
|
{"name": "a%", "owner":"test@example.com"})
|
|
</code></pre>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="sql_ddl" href="#sql_ddl" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>sql_ddl</b>
|
|
<i class="text-muted">(self, query, values=(), debug=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Commit and execute a query. DDL (Data Definition Language) queries that alter schema
|
|
autocommit in MariaDB.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="sql_list" href="#sql_list" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>sql_list</b>
|
|
<i class="text-muted">(self, query, values=(), debug=False)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Return data as list of single elements (first column).</p>
|
|
|
|
<p>Example:</p>
|
|
|
|
<pre><code># doctypes = ["DocType", "DocField", "User", ...]
|
|
doctypes = frappe.db.sql_list("select name from DocType")
|
|
</code></pre>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="table_exists" href="#table_exists" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>table_exists</b>
|
|
<i class="text-muted">(self, tablename)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Returns True if table exists.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="touch" href="#touch" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>touch</b>
|
|
<i class="text-muted">(self, doctype, docname)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Update the modified timestamp of this document.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="update" href="#update" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>update</b>
|
|
<i class="text-muted">(self)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Update multiple values. Alias for <code>set_value</code>.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="use" href="#use" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>use</b>
|
|
<i class="text-muted">(self, db_name)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p><code>USE</code> db_name.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="docs-attr-name">
|
|
<a name="validate_query" href="#validate_query" class="text-muted small">
|
|
<i class="icon-link small" style="color: #ccc;"></i></a>
|
|
<b>validate_query</b>
|
|
<i class="text-muted">(self, q)</i>
|
|
</p>
|
|
<div class="docs-attr-desc"><p>Throw exception for dangerous queries: <code>ALTER</code>, <code>DROP</code>, <code>TRUNCATE</code> if not <code>Administrator</code>.</p>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
</div>
|
|
<hr>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- autodoc --> |