From 9f995f090be16b7ddfcd655fcd118e4a7cfae049 Mon Sep 17 00:00:00 2001 From: marys Date: Tue, 27 May 2025 12:40:07 +0200 Subject: [PATCH] - add example of select filters --- main.py | 10 ++++++++++ utils/db/db_mtr_network_nodes.py | 33 ++++++++++++-------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/main.py b/main.py index b2a58dc..c5808c6 100644 --- a/main.py +++ b/main.py @@ -23,7 +23,17 @@ async def main(): # mtr_additional_query = MtrAdditionalNodeQuery() all_nodes = await mtr_additional_query.get_all_nodes() + print("==== get_all_nodes ====") [print(i.as_dict()) for i in all_nodes] + get_all_nodes_for_testing = await mtr_additional_query.get_all_nodes_for_testing() + print("==== get_all_nodes_for_testing ====") + [print(i.as_dict()) for i in get_all_nodes_for_testing] + + get_node_by_id = await mtr_additional_query.get_node_by_id(21) + print("==== get_all_nodes_for_testing ====") + print(get_node_by_id.as_dict()) + + if __name__ == "__main__": loop = asyncio.run(main()) \ No newline at end of file diff --git a/utils/db/db_mtr_network_nodes.py b/utils/db/db_mtr_network_nodes.py index 494fe1b..1de3663 100644 --- a/utils/db/db_mtr_network_nodes.py +++ b/utils/db/db_mtr_network_nodes.py @@ -14,31 +14,22 @@ class MtrAdditionalNodeQuery: Retrieve all entries from the mtr_network_nodes database table. """ async with self.db() as session: - result = await session.execute(select(MtrAdditionalNodesModel)) - all_nodes = result.scalars().all() - #await session.close() - return all_nodes + return (await session.execute(select(MtrAdditionalNodesModel))).scalars().all() - def get_all_nodes_for_testing(self) -> list: + + async def get_all_nodes_for_testing(self) -> list: """ Retrieve all entries from the mtr_network_nodes database table, exclude rows used for storing parameters for testing TAS servers. """ - all_nodes = (self.db.query(MtrAdditionalNodesModel) - .filter(MtrAdditionalNodesModel.test_servers == False) - .filter(MtrAdditionalNodesModel.enabled == True) - .all()) + async with (self.db() as session): + stmt = select(MtrAdditionalNodesModel) \ + .where(MtrAdditionalNodesModel.test_servers == False) \ + .where(MtrAdditionalNodesModel.enabled == True) + return (await session.execute(stmt)).scalars().all() - return all_nodes - - def get_mtr_config_for_servers(self) -> list: - all_nodes = (self.db.query(MtrAdditionalNodesModel) - .filter(MtrAdditionalNodesModel.test_servers == True) - .filter(MtrAdditionalNodesModel.enabled == True) - .all()) - - return all_nodes - - def get_node_by_id(self, node_id: int) -> MtrAdditionalNodesModel: - return self.db.query(MtrAdditionalNodesModel).filter_by(id=node_id).one() + async def get_node_by_id(self, node_id: int) -> MtrAdditionalNodesModel: + async with self.db() as session: + stmt = select(MtrAdditionalNodesModel).where(MtrAdditionalNodesModel.id == node_id) + return (await session.execute(stmt)).scalars().first()