Я пытаюсь написать обобщенный c метод, который должен принимать словарь фильтра в качестве пары значений ключа и использовать sqlalchemy create select, поддерживающий несколько операторов where.
def _get_selected_field_value(self, table, fields, col_value=None):
"""Performs select Operation and gets the value of field.
Arguments:
table (sqlalchemy.Table) : table to select data from.
fields (list) : fields whose value to retrieve.
col_value (dict) : where column of table has value.
"""
stmt = db.select(fields).where(tuple_(*list(col_value.keys())).in_(list(col_value.values())))
, но оказывается, что это
(Pdb) str(stmt)
'SELECT host.name \nFROM host \nWHERE (:param_1) IN ((:param_2))'
Это выглядит не так!
Итак, для таблицы, которая выглядит следующим образом:
+----+-----------------+--------------+---------------+-------------------+
| id | name | user | ip_address | mac_address |
+----+-----------------+--------------+---------------+-------------------+
| 1 | DietPi | root | 192.168.0.151 | bx:2x:ex:bx:9x:6x |
+----+-----------------+--------------+---------------+-------------------+
Я хочу
MariaDB [lan]> SELECT host.name from host WHERE host.user='root' and host.ip_address='192.168.0.151' ;
+--------+
| name |
+--------+
| DietPi |
+--------+