【问题标题】:Snowflake & SQLAlchemy "unexpected 'UNIQUE'雪花和 SQLAlchemy “意外的 'UNIQUE'
【发布时间】:2020-02-19 05:37:55
【问题描述】:

我正在运行一个 python 数据库迁移脚本 (Flask-Migrate) 并添加了 alembic.ddl.imp 导入 DefaultImpl 来解决第一组错误,但现在我得到了以下内容。我正在尝试使用此脚本在雪花中设置我的表和数据库。我错过了什么?一切似乎都在工作,我似乎无法在雪花文档中找到有关此特定错误的任何帮助。我假设雪花 sqlalchemy 连接器将解决创建唯一索引的问题。

到目前为止,脚本确实创建了几个表,但是当它到达这部分时,它会抛出错误。

> sqlalchemy.exc.ProgrammingError:
> (snowflake.connector.errors.ProgrammingError) 001003 (42000): SQL
> compilation error: syntax error line 1 at position 7 unexpected
> 'UNIQUE'. [SQL: CREATE UNIQUE INDEX ix_flicket_users_token ON
> flicket_users (token)] (Background on this error at:
> http://sqlalche.me/e/f405)

【问题讨论】:

    标签: python sqlalchemy flask-sqlalchemy snowflake-cloud-data-platform


    【解决方案1】:

    Snowflake 没有INDEX 对象,因此任何CREATE ... INDEX 语句都会失败。

    使用 Snowflake,您必须信任数据库才能使用微分区组织您的数据,并为您的查询构建良好的访问计划。

    一开始你会感到不安,但最终不再担心。

    不过,前沿解决方案需要使用查询日志来监控/调整性能。
    这里没有什么新鲜事。

    【讨论】:

    • 这就是我的想法,但为什么 Snowflake 的 sqlalchemy 连接器允许创建 CREATE INDEX 语句。它违背了使用 Sqlalchemy 的目的。 ?
    • Snowflake 连接器是第 3 方添加的,也许他们没有时间来平滑这些边缘。另一方面,当简单的解决方案是不使用索引时,他们为什么要做出特殊情况。
    • Well Snowflake 有一个 SQLAlchemy 连接器,所以我认为他们的连接器只会将有关索引创建的任何内容转换为不创建索引。我在他们的 github 上发布了它,有人正在调查它。如果/当它得到解决时,我会更新它:)
    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2023-03-18
    • 2020-04-30
    • 2020-10-07
    • 1970-01-01
    • 2022-01-01
    • 2023-04-05
    相关资源
    最近更新 更多