mysql - 如果使用 SqlAlchemy 在 ORM 级别模拟它们,是否需要数据库中的 FK?

标签 mysql orm sqlalchemy

所以我最近继承了一些使用由通用 MySQL 数据库支持的 SqlAlchemy 的应用程序。我对 python 还很陌生,没有使用 SqlAlchemy 的经​​验。

1 个系统为仅在该应用程序中使用的表定义了 FK。但是,其他表都没有定义任何约束。其他表的所有关系都在 ORM 中的应用程序级别定义。作为 SqlAlchemy 的新手,我现在想知道这是否只是草率的代码演变,或者是否可以对这种不一致进行合理的解释。

仅依赖 ORM 建立关系与在持久性和应用程序级别之间保持约束同步的优点/缺点是什么?

谢谢

最佳答案

DB FK 提供两个显着优势:

  1. 它将创建一个索引来优化连接性能
  2. 它将在数据库级别确保您的应用程序不会粘贴没有对等点的无效 key ,从而增强其一致性

除非您需要数据库中的灵 active 来拥有无效键,否则我强烈建议对您计划加入的所有关系使用 FK 约束。

关于mysql - 如果使用 SqlAlchemy 在 ORM 级别模拟它们,是否需要数据库中的 FK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051870/

相关文章:

php - PHP无法将数据插入MYSQL数据库。改为插入空白行

mysql - 如何使用 groupby 并使用 laravel ORM 进行计数?

java - 来自谷歌的 ORM

php - 如何在 Laravel 模型中使用带有 JOIN 和 GROUP BY 的自定义 SELECT?

python - SQLAlchemy监听多对多关系中的属性变化并更改initiator的其他属性

python - 如何解决 sqlalchemy.orm.exc.UnmappedInstanceError

mysql - 使用 SSIS 将 SQL Server 表移动到特定的 MySQL 文件夹

mysql - 将一个表插入另一个具有冲突的自动增量值的最简单方法?

mysql - 在 mysql 中查询股票/价格趋势

postgresql - SQLAlchemy 和 postgres 反射 : erroneously reflecting all schemas