SQLAlchemy:“如果不存在则创建模式”

新手上路,请多包涵

我想在 SQLAlchemy 中执行“CREATE SCHEMA IF NOT EXISTS”查询。有没有比这更好的方法:

     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。

原文由 Jan Pisl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 968
2 个回答

我有同样的问题,我找到的答案是:

 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):
    ...

原文由 stardust 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于 MS Sql 用户,没有 has_schema() 但这似乎有效:

 if schemaname not in conn.dialect.get_schema_names(conn):
   conn.execute(schema.CreateSchema(schemaname))

原文由 Matthew 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题