如何使用SQLAlchemy检查PostgreSQL模式是否存在?

Tan*_*rad 5 python postgresql sqlalchemy

我正在使用SQLAlchemy在PostgreSQL数据库中的特定模式下生成表。如果该架构不存在,我想创建它。我知道PostgreSQL查询来检查架构的存在:

SELECT exists(select schema_name FROM information_schema.schemata WHERE schema_name = 'foo')
Run Code Online (Sandbox Code Playgroud)

但我想知道如何使用SQLAlchemy处理此问题。

syn*_*tic 6

@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;')
Run Code Online (Sandbox Code Playgroud)


jav*_*vex 4

如果您想将其与 SQLAlchemy 集成,您可以使用反射,但为了更简单、更快捷的解决方案:

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

这将返回TrueFalse