Здравствуйте, я обладаю поверхностным пониманием того, когда стоит использовать оператор assert. Читал, что его стоит использовать для самопроверки кода и для помощи выявления ошибок.
Вот мой код:
from databases import Database
from sqlalchemy import Table
class BaseCRUD:
storage: Database
storing_table: Table
def __init__(self, storage: Database, storing_table: Table) -> None:
self.storage, self.storing_table = storage, storing_table
async def passage_through_fields(self, data: dict):
columns = [column.name for column in self.storing_table.columns]
Проверку в методе passage_through_fields я могу реализовать двумя способами:
Первый
for key in data.keys():
assert key not in columns, ValueError(
f'The table called {self.storing_table.name} does not contain the column called {key}'
)
И второй
for key in data.keys():
if key not in columns:
raise ValueError(
f'The table called {self.storing_table.name} does not contain the column called {key}'
)
На всякий случай напишу, что я пишу сервис в формате json API и ошибка, которая будет вызываться в вышеуказанном методе не будет относится к пользователям. Она вызывается вследствие того, что в полученном словаре могут находиться ключи не соответствующие колонкам в таблице SQLAlchemy, следовательно это ошибка будет для программистов, а не для потребителей.