Как проверить, существует ли схема PostgreSQL с помощью SQLAlchemy?

Я использую SQLAlchemy для генерации таблиц в конкретной схеме в базе данных PostgreSQL. Если схема не существует, я хочу ее создать. Я знаю запрос PostgreSQL для проверки наличия схемы:

SELECT exists(select schema_name FROM information_schema.schemata WHERE schema_name = 'foo') 

но я хочу знать, как я должен справиться с этим, используя SQLAlchemy.

Если вы хотите интегрировать его с SQLAlchemy, вы можете использовать отражение, но для более простого и быстрого решения:

 from sqlalchemy.sql import exists, select exists(select([("schema_name")]).select_from("information_schema.schemata"). where("schema_name == 'foo'")) 

Это вернет True или False .

Ответ @ javax почти правильный; следующее немного разъясняется:

 q = exists(select([("schema_name")]).select_from("information_schema.schemata") .where("schema_name = 'foo'")) if not session.query(q).scalar(): session.execute('CREATE SCHEMA foo;')