3.4 KiB
SQL Engines
further read
info
Initial sponsored by Search and Discovery Fund of NLnet Foundation.
With the SQL engines you can bind SQL databases into SearXNG. The following Relational Database Management System (RDBMS) are supported:
engine sqliteengine postgresqlengine mysql_server&engine mariadb_server
All of the engines above are just commented out in the settings.yml
<searx/settings.yml>, as you have to set the required attributes for the engines, e.g. database: ...
- name: ...
engine: {sqlite|postgresql|mysql_server}
database: ...
result_template: {template_name}
query_str: ...By default, the engines use the key-value template for displaying results / see simple <searx/templates/simple/result_templates/key-value.html> theme. If you are not satisfied with the original result layout, you can use your own template, set result_template attribute to {template_name} and place the templates at:
searx/templates/{theme_name}/result_templates/{template_name}
If you do not wish to expose these engines on a public instance, you can still add them and limit the access by setting tokens as described in section private engines.
Extra Dependencies
For using engine postgresql or engine mysql_server you need to install additional packages in Python's Virtual Environment of your SearXNG instance. To switch into the environment (searxng-src) you can use searxng.sh:
$ sudo utils/searxng.sh instance cmd bash
(searxng-pyenv)$ pip install ...
Configure the engines
The configuration of the new database engines are similar. You must put a valid SQL-SELECT query in query_str. At the moment you can only bind at most one parameter in your query. By setting the attribute limit you can define how many results you want from the SQL server. Basically, it is the same as the LIMIT keyword in SQL.
Please, do not include LIMIT or OFFSET 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 limit.
SQLite
info
sqlite.py <searx/engines/sqlite.py>
searx.engines.sqlite
PostgreSQL
info
postgresql.py <searx/engines/postgresql.py>pip installpsycopg2-binary
searx.engines.postgresql
MySQL
info
mysql_server.py <searx/engines/mysql_server.py>pip installmysql-connector-python <mysql-connector-python>
searx.engines.mysql_server
MariaDB
info
mariadb_server.py <searx/engines/mariadb_server.py>pip installmariadb <mariadb>
searx.engines.mariadb_server