.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.engines.mysql_server Namespace Reference

Functions

 init (engine_settings)
 
 search (query, params)
 
 _fetch_results (cur)
 

Variables

str engine_type = 'offline'
 
str auth_plugin = 'caching_sha2_password'
 
str host = "127.0.0.1"
 
int port = 3306
 
str database = ""
 
str username = ""
 
str password = ""
 
str query_str = ""
 
int limit = 10
 
bool paging = True
 
str result_template = 'key-value.html'
 
 _connection = None
 

Detailed Description

MySQL is said to be the most popular open source database.  Before enabling
MySQL engine, you must install the package ``mysql-connector-python``.

The authentication plugin is configurable by setting ``auth_plugin`` in the
attributes.  By default it is set to ``caching_sha2_password``.

Example
=======

This is an example configuration for querying a MySQL server:

.. code:: yaml

   - name: my_database
     engine: mysql_server
     database: my_database
     username: searxng
     password: password
     limit: 5
     query_str: 'SELECT * from my_table WHERE my_column=%(query)s'

Implementations
===============

Function Documentation

◆ _fetch_results()

searx.engines.mysql_server._fetch_results ( cur)
protected

Definition at line 78 of file mysql_server.py.

78def _fetch_results(cur):
79 results = []
80 for res in cur:
81 result = dict(zip(cur.column_names, map(str, res)))
82 result['template'] = result_template
83 results.append(result)
84
85 return results

Referenced by searx.engines.mysql_server.search().

+ Here is the caller graph for this function:

◆ init()

searx.engines.mysql_server.init ( engine_settings)

Definition at line 49 of file mysql_server.py.

49def init(engine_settings):
50 global _connection # pylint: disable=global-statement
51
52 if 'query_str' not in engine_settings:
53 raise ValueError('query_str cannot be empty')
54
55 if not engine_settings['query_str'].lower().startswith('select '):
56 raise ValueError('only SELECT query is supported')
57
58 _connection = mysql.connector.connect(
59 database=database,
60 user=username,
61 password=password,
62 host=host,
63 port=port,
64 auth_plugin=auth_plugin,
65 )
66
67

◆ search()

searx.engines.mysql_server.search ( query,
params )

Definition at line 68 of file mysql_server.py.

68def search(query, params):
69 query_params = {'query': query}
70 query_to_run = query_str + ' LIMIT {0} OFFSET {1}'.format(limit, (params['pageno'] - 1) * limit)
71
72 with _connection.cursor() as cur:
73 cur.execute(query_to_run, query_params)
74
75 return _fetch_results(cur)
76
77

References searx.engines.mysql_server._fetch_results(), and searx.format.

+ Here is the call graph for this function:

Variable Documentation

◆ _connection

searx.engines.mysql_server._connection = None
protected

Definition at line 46 of file mysql_server.py.

◆ auth_plugin

str searx.engines.mysql_server.auth_plugin = 'caching_sha2_password'

Definition at line 36 of file mysql_server.py.

◆ database

str searx.engines.mysql_server.database = ""

Definition at line 39 of file mysql_server.py.

◆ engine_type

str searx.engines.mysql_server.engine_type = 'offline'

Definition at line 35 of file mysql_server.py.

◆ host

str searx.engines.mysql_server.host = "127.0.0.1"

Definition at line 37 of file mysql_server.py.

◆ limit

int searx.engines.mysql_server.limit = 10

Definition at line 43 of file mysql_server.py.

◆ paging

bool searx.engines.mysql_server.paging = True

Definition at line 44 of file mysql_server.py.

◆ password

str searx.engines.mysql_server.password = ""

Definition at line 41 of file mysql_server.py.

◆ port

int searx.engines.mysql_server.port = 3306

Definition at line 38 of file mysql_server.py.

◆ query_str

str searx.engines.mysql_server.query_str = ""

Definition at line 42 of file mysql_server.py.

◆ result_template

str searx.engines.mysql_server.result_template = 'key-value.html'

Definition at line 45 of file mysql_server.py.

◆ username

str searx.engines.mysql_server.username = ""

Definition at line 40 of file mysql_server.py.