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

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

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

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

2 Solutions collect form web for “Как проверить, существует ли схема PostgreSQL с помощью 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;') 
  • Могу ли я заставить SQLAlchemy загружать подзапрос, не повторяя полный исходный запрос?
  • Хранение массива PostgreSQL значений ENUM
  • Обновите схему базы данных sqlite с sqlalchemy и elixir
  • Почему в Windows 7 вставка и удаление более чем в 100 раз больше, чем Mac 10.9?
  • Почему SQLAlchemy вставляет sqlite в 25 раз медленнее, чем использование sqlite3 напрямую?
  • Массовое обновление в SQLAlchemy Core с использованием WHERE
  • Когда использовать SQLAlchemy .get () vs .filter (Foo.ID == primary_key_id) .first ()
  • Запрос SQLAlchemy для объекта с подсчетом отношения
  • Python - лучший язык программирования в мире.