This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p>Initial sponsored by <aclass="reference external"href="https://nlnet.nl/discovery">Search and Discovery Fund</a> of <aclass="reference external"href="https://nlnet.nl/">NLnet Foundation</a>.</p>
</aside>
<p>With the <em>SQL engines</em> you can bind SQL databases into SearXNG. The following
Relational Database Management System (RDBMS) are supported:</p>
<p>All of the engines above are just commented out in the <aclass="extlink-origin reference external"href="https://github.com/searxng/searxng/blob/master/searx/settings.yml">settings.yml</a>, as you have to set the required attributes for the
engines, e.g. <codeclass="docutils literal notranslate"><spanclass="pre">database:</span></code> …</p>
<p>By default, the engines use the <codeclass="docutils literal notranslate"><spanclass="pre">key-value</span></code> template for displaying results /
see <aclass="extlink-origin reference external"href="https://github.com/searxng/searxng/blob/master/searx/templates/simple/result_templates/key-value.html">simple</a>
theme. If you are not satisfied with the original result layout, you can use
your own template, set <codeclass="docutils literal notranslate"><spanclass="pre">result_template</span></code> attribute to <codeclass="docutils literal notranslate"><spanclass="pre">{template_name}</span></code> and
<h2><aclass="toc-backref"href="#id11"role="doc-backlink">Extra Dependencies</a><aclass="headerlink"href="#extra-dependencies"title="Link to this heading">¶</a></h2>
<p>For using <aclass="reference internal"href="#engine-postgresql"><spanclass="std std-ref">PostgreSQL</span></a> or <aclass="reference internal"href="#engine-mysql-server"><spanclass="std std-ref">MySQL</span></a> you need to
install additional packages in Python’s Virtual Environment of your SearXNG
instance. To switch into the environment (<aclass="reference internal"href="../../../admin/installation-searxng.html#searxng-src"><spanclass="std std-ref">Install SearXNG & dependencies</span></a>) you can use
<h2><aclass="toc-backref"href="#id12"role="doc-backlink">Configure the engines</a><aclass="headerlink"href="#configure-the-engines"title="Link to this heading">¶</a></h2>
<p>The configuration of the new database engines are similar. You must put a valid
SQL-SELECT query in <codeclass="docutils literal notranslate"><spanclass="pre">query_str</span></code>. At the moment you can only bind at most one
parameter in your query. By setting the attribute <codeclass="docutils literal notranslate"><spanclass="pre">limit</span></code> you can define how
many results you want from the SQL server. Basically, it is the same as the
<codeclass="docutils literal notranslate"><spanclass="pre">LIMIT</span></code> keyword in SQL.</p>
<p>Please, do not include <codeclass="docutils literal notranslate"><spanclass="pre">LIMIT</span></code> or <codeclass="docutils literal notranslate"><spanclass="pre">OFFSET</span></code> in your SQL query as the engines
rely on these keywords during paging. If you want to configure the number of
returned results use the option <codeclass="docutils literal notranslate"><spanclass="pre">limit</span></code>.</p>
<sectionid="engine-sqlite">
<spanid="id2"></span><h3><aclass="toc-backref"href="#id13"role="doc-backlink">SQLite</a><aclass="headerlink"href="#engine-sqlite"title="Link to this heading">¶</a></h3>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.sqlite.</span></span><spanclass="sig-name descname"><spanclass="pre">database</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.sqlite.database"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.sqlite.</span></span><spanclass="sig-name descname"><spanclass="pre">query_str</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.sqlite.query_str"title="Link to this definition">¶</a></dt>
<dd><p>SQL query that returns the result items.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.sqlite.</span></span><spanclass="sig-name descname"><spanclass="pre">sqlite_cursor</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/sqlite.html#sqlite_cursor"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.sqlite.sqlite_cursor"title="Link to this definition">¶</a></dt>
<dd><p>Implements a <aclass="reference external"href="https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager"title="(in Python v3.13)"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Context</span><spanclass="pre">Manager</span></code></a> for a
<spanid="id3"></span><h3><aclass="toc-backref"href="#id14"role="doc-backlink">PostgreSQL</a><aclass="headerlink"href="#engine-postgresql"title="Link to this heading">¶</a></h3>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.postgresql.</span></span><spanclass="sig-name descname"><spanclass="pre">host</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'127.0.0.1'</span></em><aclass="headerlink"href="#searx.engines.postgresql.host"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.postgresql.</span></span><spanclass="sig-name descname"><spanclass="pre">port</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'5432'</span></em><aclass="headerlink"href="#searx.engines.postgresql.port"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.postgresql.</span></span><spanclass="sig-name descname"><spanclass="pre">database</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.postgresql.database"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.postgresql.</span></span><spanclass="sig-name descname"><spanclass="pre">username</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.postgresql.username"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.postgresql.</span></span><spanclass="sig-name descname"><spanclass="pre">password</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.postgresql.password"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.postgresql.</span></span><spanclass="sig-name descname"><spanclass="pre">query_str</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.postgresql.query_str"title="Link to this definition">¶</a></dt>
<dd><p>SQL query that returns the result items.</p>
</dd></dl>
</section>
<sectionid="engine-mysql-server">
<spanid="id6"></span><h3><aclass="toc-backref"href="#id15"role="doc-backlink">MySQL</a><aclass="headerlink"href="#engine-mysql-server"title="Link to this heading">¶</a></h3>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mysql_server.</span></span><spanclass="sig-name descname"><spanclass="pre">host</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'127.0.0.1'</span></em><aclass="headerlink"href="#searx.engines.mysql_server.host"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mysql_server.</span></span><spanclass="sig-name descname"><spanclass="pre">port</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">3306</span></em><aclass="headerlink"href="#searx.engines.mysql_server.port"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mysql_server.</span></span><spanclass="sig-name descname"><spanclass="pre">database</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mysql_server.database"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mysql_server.</span></span><spanclass="sig-name descname"><spanclass="pre">username</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mysql_server.username"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mysql_server.</span></span><spanclass="sig-name descname"><spanclass="pre">password</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mysql_server.password"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mysql_server.</span></span><spanclass="sig-name descname"><spanclass="pre">query_str</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mysql_server.query_str"title="Link to this definition">¶</a></dt>
<dd><p>SQL query that returns the result items.</p>
</dd></dl>
</section>
<sectionid="mariadb">
<spanid="engine-mariadb-server"></span><h3><aclass="toc-backref"href="#id16"role="doc-backlink">MariaDB</a><aclass="headerlink"href="#mariadb"title="Link to this heading">¶</a></h3>
<pid="module-searx.engines.mariadb_server">MariaDB is a community driven fork of MySQL. Before enabling MariaDB engine,
you must the install the pip package <codeclass="docutils literal notranslate"><spanclass="pre">mariadb</span></code> along with the necessary
prerequities.</p>
<p><aclass="reference external"href="https://mariadb.com/docs/server/connect/programming-languages/c/install/">See the following documentation for more details</a></p>
<sectionid="id9">
<h4>Example<aclass="headerlink"href="#id9"title="Link to this heading">¶</a></h4>
<p>This is an example configuration for querying a MariaDB server:</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mariadb_server.</span></span><spanclass="sig-name descname"><spanclass="pre">host</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'127.0.0.1'</span></em><aclass="headerlink"href="#searx.engines.mariadb_server.host"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mariadb_server.</span></span><spanclass="sig-name descname"><spanclass="pre">port</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">3306</span></em><aclass="headerlink"href="#searx.engines.mariadb_server.port"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mariadb_server.</span></span><spanclass="sig-name descname"><spanclass="pre">database</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mariadb_server.database"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mariadb_server.</span></span><spanclass="sig-name descname"><spanclass="pre">username</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mariadb_server.username"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mariadb_server.</span></span><spanclass="sig-name descname"><spanclass="pre">password</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mariadb_server.password"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.mariadb_server.</span></span><spanclass="sig-name descname"><spanclass="pre">query_str</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.mariadb_server.query_str"title="Link to this definition">¶</a></dt>
<dd><p>SQL query that returns the result items.</p>