【发布时间】:2018-11-28 09:04:42
【问题描述】:
我想在 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。
【问题讨论】:
-
嗯,你还没有提到你正在使用哪个数据库。目前我在 sqlalchemy 中看不到任何东西,但可以肯定我们可以运行原始 ddl 查询。例如,在 postgres db 的情况下,我们可以执行类似
engine.execute('CREATE SCHEMA IF NOT EXISTS schema_name') -
我目前正在使用 PostgreSQL,但这意味着将来会被多个数据库使用。这就是为什么我没有使用 psycopg2 或任何其他特定于数据库的工具 - 因为我认为我可以更改每个数据库的 connstr 变量,SQLAlchemy 将在该特定数据库中创建模式。
-
我错了吗? SQLAlchemy 不是这样工作的吗?
-
嗯,它会以同样的方式工作,唯一的事情是如果它已经存在,它会抛出编程异常。如果你能优雅地处理它,那么 Sqlalchemy 将能够动态创建模式。
标签: python sql database python-3.x sqlalchemy