Python 获取最后插入的记录';s主键在“中”;声明性的“u base()”;

Python 获取最后插入的记录';s主键在“中”;声明性的“u base()”;,python,sqlalchemy,Python,Sqlalchemy,我想获得上次插入的主键,我已经知道两种方法: 1) 带“原始SQL”的“lastrowid” 2) “插入的\u主键”与“插入() 但是我的问题是声明性的\u base()“ 如果我这样做: res = session.add(rcd) 它给了我“没有”。或者如果我这样做: res = session.commit() 同样的事情也发生了。我的问题是: 如果是“声明性_base()”,有什么好方法可以访问“lastrowid”或“inserted_primary_key” 最好的方法是什么?

我想获得上次插入的主键,我已经知道两种方法:

1) 带“原始SQL”的“lastrowid”

2) “插入的\u主键”与“插入()

但是我的问题是声明性的\u base()“

如果我这样做:

res = session.add(rcd)
它给了我“没有”。或者如果我这样做:

res = session.commit()
同样的事情也发生了。我的问题是:

如果是“声明性_base()”,有什么好方法可以访问“lastrowid”或“inserted_primary_key”


最好的方法是什么?

调用
session.commit()
后,访问
rcd.f1
将返回其生成的主键。SQLAlchemy在创建对象后自动从数据库重新加载该对象

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite://')

Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()

class TBL(Base):
    __tablename__ = 'tbl'

    f1 = Column(Integer, primary_key=True)
    f2 = Column(String(64))

Base.metadata.create_all(engine)

rcd = TBL(f2='some_data')

session.add(rcd)
session.commit()
res = session.add(rcd)
res = session.commit()