Здесь происходит две вещи:
- Как избежать SQL-инъекций
- Динамическая настройка схемы с (предположительно) PostgreSQL
Первый вопрос имеет очень широкую сферу. Возможно, вы захотите взглянуть на более старые вопросы об SQLAlchemy и SQL-инъекции, например, вот этот SQLAlchemy + SQL-инъекция
Ваш второй вопрос может быть решен несколькими способами, хотя я рекомендую следующий подход из документации SQLAlchemy: https://docs.sqlalchemy.org/en/13/dialects/postgresql.html#remote-schema-table-introspection-and-postgresql-search-path
PostgreSQL поддерживает команду «путь поиска», которая устанавливает схему для всех операций в транзакции.
Ваш код запроса может выглядеть следующим образом:
qry_str = f"SET search_path TO {schema}";
В качестве альтернативы, если вы используете декларативный подход SQLAlchemy, вы можете использовать объект MetaData, как в этом вопросе / ответе Поддержка SQLAlchemy схем Postgres