首页 > 解决方案 > 获取/使用新记录的自动增量主键作为另一个表中记录的外键

问题描述

我的问题是针对 SQLAlchemy 的,但是知道如何用任何 sql 语言做到这一点也很棒。

我正在尝试同时向 2 个不同的表创建/添加 2 条记录:

第一个(父)记录将有一个生成的(自动增量=真)主键,我希望第二个(子)记录有一个列,它是第一个记录主键的外键。我的问题是,当第一条记录添加到其表中时,我不知道如何获取生成的主键,以便我可以将该值用作我的第二条记录(在另一个表中)中的外键。

Ex: 

parent table:
[pk_id, name, date]
[55, "value", "value"]

child table:
[id, fk_id, color, quantity]
[300, 55, "value", "value"]

我需要从父表中获取生成的 55,并在创建子记录时将其用作 fk_id。

我该如何做到这一点?

标签: sqlsqlalchemyflask-sqlalchemy

解决方案


您可以使用它inserted_primary_key来查找最近插入的记录的主键。

https://kite.com/python/docs/sqlalchemy.engine.ResultProxy.inserted_primary_key

根据文档,它会根据您的数据库后端自动填充,这是来自https://overiq.com/sqlalchemy-101/crud-using-sqlalchemy-core/的示例

ins = insert(customers)

r = conn.execute(ins, 
    first_name = "Tim", 
    last_name = "Snyder", 
    username = "timsnyder", 
    email = "timsnyder@mail.com",
    address = '1611 Sundown Lane',
    town = 'Langdale'
)
r.inserted_primary_key

推荐阅读