我想在SQLAlchemy中执行"如果不存在则创建模式"查询.

    engine = sqlalchemy.create_engine(connstr)

    schema_name = config.get_config_value('db', 'schema_name')

    #Create schema; if it already exists, skip this
    try:
        engine.execute(CreateSchema(schema_name))
    except sqlalchemy.exc.ProgrammingError:
        pass

我正在使用Python 3.5.

推荐答案

我有同样的问题,我发现答案是:

if not engine.dialect.has_schema(engine, schema_name):
    engine.execute(sqlalchemy.schema.CreateSchema(schema_name))

我们也可以在没有引擎实例的情况下判断模式,但使用连接

conn = engine.connect()
if conn.dialect.has_schema(conn, schema_name):
    ...

Python-3.x相关问答推荐

Python:字典和列表:在列表字典中搜索子列表的有效方法

如何计算累积几何平均数?

数据框中从每个组/ID的底部删除行

在 python 中使用正则表达式在行尾查找特定元素

如何向 scikit-learn 函数添加类型提示?

避免重复连续字符但不包括一个特定字符的正则表达式

通过附加/包含多个列表来创建 nDimensional 列表

如何将虚拟变量列转换为多列?

获取以特定字母开头的姓氏

ImportError:没有名为资源的模块

如何将具有多个参数的函数传递给 python concurrent.futures.ProcessPoolExecutor.map()?

内部如何使用 Python 语法?

在数据类中创建类变量的正确方法

为什么 virtualenv 会有效地禁用 Python 3 制表符补全?

如何在元素列表中找到最大的数字,可能是非唯一的?

如何在不使用 @hydra.main() 的情况下获取 Hydra 配置

从 csv 中删除单行而不复制文件

pdfminer python 3.5

三个参数的reduce函数

如何从 Base64 转换为字符串 Python 3.2