gpt4 book ai didi

mysql - 使用 Diesel 的声明式架构定义

转载 作者:行者123 更新时间:2023-12-04 07:39:02 27 4
gpt4 key购买 nike

我想以声明方式编写表模式,例如

  • GORM 自动迁移 https://gorm.io/ko_KR/docs/migration.html
  • Django 迁移 https://docs.djangoproject.com/en/3.2/topics/migrations/

  • 但是,据我所知,Diesel 需要像下面这样的手写迁移 DDL。
    -- up.sql
    CREATE TABLE members (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL
    );

    -- down.sql
    DROP TABLE members;
    它有点复杂,因为它是有状态的。
    Diesel 提供的模式是一种声明式的编写方式吗?
    或者有没有好的外部工具?
    我发现 Prisma 可以从以自己的语法编写的声明式架构生成与 up.sql 等效的 DDL。
    但是我找不到生成down.sql的方法
    https://www.prisma.io/docs/concepts/components/prisma-migrate

    最佳答案

    如果我理解正确,您正在寻找一种方法来保持 Rust 实体和数据库模式同步,而无需编写任何 SQL(这基本上是像 EFCore 或 GORM 这样的常规 orm 会提供的)。
    如果这就是您所需要的,恐怕柴油不会满足您的要求。
    有这个看起来不错的图书馆https://github.com/rust-db/barrel ,它为您提供了一种使用 Rust 而不是 SQL 编写迁移的方法,有点像 EFCore。
    柴油还提供 embed_migrations!宏,您可以使用它来在不使用 cli 的情况下自动运行迁移。
    然而,虽然所有这些工具都可以帮助您自动化数据库迁移,但您仍然必须手动编写它们。

    关于mysql - 使用 Diesel 的声明式架构定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67585782/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com