gpt4 book ai didi

python - 获取 SQLAlchemy 中已创建记录的 ID

转载 作者:太空狗 更新时间:2023-10-30 01:43:09 26 4
gpt4 key购买 nike

如何在 SQLAlchemy 中获取创建记录的 ID?

我在做:

engine.execute("insert into users values  (1,'john')")

最佳答案

当您执行纯文本语句时,关于新的 PK 值是否可用以及通过什么方式可用,您将受制于所使用的 DBAPI。使用 SQlite 和 MySQL DBAPI,您将把它作为 result.lastrowid,它只为您提供游标的 .lastrowid 值。对于 PG、Oracle 等,没有“.lastrowid”——正如其他人所说,您可以对那些可以通过 result.fetchone() 获得结果的情况使用“RETURNING”(尽管将 RETURNING 与 oracle 一起使用,再次没有利用SQLAlchemy 表达式构造,需要几个笨拙的步骤),或者如果 RETURNING 不可用,您可以使用直接序列访问(pg 中的 NEXTVAL),或“post fetch”操作(PG 中的 CURRVAL,@@identity 或 scope_identity() MSSQL)。

听起来很复杂吧?这就是您最好使用 table.insert() 的原因。 SQLAlchemy 提供新生成的 PK 的主要系统旨在与这些构造一起使用。在那里,无论后端如何,result.last_inserted_ids() 方法都会在所有情况下为您提供新生成的(可能是复合的)PK。以上.lastrowid、序列执行、RETURNING等方法都给你搞定了(0.6有RETURNING就用了)。

关于python - 获取 SQLAlchemy 中已创建记录的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188844/

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