summaryrefslogtreecommitdiff
path: root/searx/engines/sqlite.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/sqlite.py')
-rw-r--r--searx/engines/sqlite.py44
1 files changed, 39 insertions, 5 deletions
diff --git a/searx/engines/sqlite.py b/searx/engines/sqlite.py
index 6de12f5fe..c86df5867 100644
--- a/searx/engines/sqlite.py
+++ b/searx/engines/sqlite.py
@@ -1,7 +1,40 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# lint: pylint
+"""SQLite is a small, fast and reliable SQL database engine. It does not require
+any extra dependency.
-"""SQLite database (Offline)
+Example
+=======
+
+.. _MediathekView: https://mediathekview.de/
+
+To demonstrate the power of database engines, here is a more complex example
+which reads from a MediathekView_ (DE) movie database. For this example of the
+SQlite engine download the database:
+
+- https://liste.mediathekview.de/filmliste-v2.db.bz2
+
+and unpack into ``searx/data/filmliste-v2.db``. To search the database use e.g
+Query to test: ``!mediathekview concert``
+
+.. code:: yaml
+
+ - name: mediathekview
+ engine: sqlite
+ disabled: False
+ categories: general
+ result_template: default.html
+ database: searx/data/filmliste-v2.db
+ query_str: >-
+ SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title,
+ COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url,
+ description AS content
+ FROM film
+ WHERE title LIKE :wildcard OR description LIKE :wildcard
+ ORDER BY duration DESC
+
+Implementations
+===============
"""
@@ -26,14 +59,15 @@ def init(engine_settings):
@contextlib.contextmanager
def sqlite_cursor():
- """Implements a `Context Manager`_ for a :py:obj:`sqlite3.Cursor`.
+ """Implements a :py:obj:`Context Manager <contextlib.contextmanager>` for a
+ :py:obj:`sqlite3.Cursor`.
- Open database in read only mode: if the database doesn't exist.
- The default mode creates an empty file on the file system.
+ Open database in read only mode: if the database doesn't exist. The default
+ mode creates an empty file on the file system. See:
- see:
* https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
* https://www.sqlite.org/uri.html
+
"""
uri = 'file:' + database + '?mode=ro'
with contextlib.closing(sqlite3.connect(uri, uri=True)) as connect: