sql - 获取/使用新记录的自动增量主键作为另一个表中记录的外键
问题描述
我的问题是针对 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。
我该如何做到这一点?
解决方案
您可以使用它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
推荐阅读
- css - CSS 横幅图像不会仅显示为纯白色背景
- spring-boot - Spring Boot React Google OAuth2注销未重定向
- ios - 无法从 inappbrowser 向 Cordova 应用程序发布消息
- python - 无法单击搜索下拉框
- uwp - 如何在 Syncfusion 图表中获取所选对象?
- angular - 角度的虚拟滚动不将数据添加到列表
- database - pimcore 5.6可以使用pimcore 4.5的mysql数据库吗?
- postgresql - sql 执行失败:将数据帧插入到 postgresql 服务器
- regex - 使用正则表达式过滤器作为 aws cloudwatch 日志指标过滤器
- visual-studio - URI 的目标不存在:'package:english_words/english_words.dart'.dart