SQLAlchemy:在插入数据以不使用外键之前检查其他表中的数据是否存在

时间:2019-06-18 08:14:34

标签: python-3.x flask foreign-keys flask-sqlalchemy

我正在研究新项目,因此我们决定使用Flask,SQLAlchemy,Mysql。我已经习惯了使用外键,但是,DBA这次告诉我们我们不能使用外键。因此,我想在插入或更新数据之前检查其他表中是否存在数据,以保持数据干净整洁。我可以编写一些代码来检查这一点,但是我想知道是否有一种方法可以检查SQLAlchemy或flask上的数据是否存在,因为使用该表的任何类型的API都必须检查数据的存在,这将是浪费的出于一个原因实现相同的代码。

另外,我想知道这种情况是否常见(仅限使用外键)

1 个答案:

答案 0 :(得分:0)

目前尚不清楚发生了什么,但我会猜测。

如果此新项目使用的是完全独立的数据库,则可能无法为原始数据库中的表强制使用外键。 (这并不意味着您不能拥有带有相关ID的列,只是不能确保所指向的行仍然存在。)MySQL does allow外键在外数据库中,但是似乎受到一些限制。例如,如果数据库位于不同的计算机上,则此数据库可能不可用。在这种情况下,您将需要进行第二次数据库连接/ API调用,并使用该调用在原始数据库中进行搜索以验证新数据,然后再添加对象。在使用该ID之前,您需要检查该ID是否仍然存在,如果不存在,请处理错误。

但是,实际上,我认为您需要回到DBA并请他/她解释为什么这不可能。然后请该人提出替代方案。