Flask-SqlAlchemy-Python getattr() 速度

Flask-SqlAlchemy-Python getattr() speed

我有一个 MyModel 对象,它继承自 SQLAlchemy 的模型。访问主键 (ID) 似乎比任何其他属性花费的时间都长得多:

value = getattr(model, ID)

需要大约 1.4 毫秒来计算或获取 but 的值,

value = getattr(model, <any_other_column>)

获取该列的值所需的时间呈指数级减少,无论它是什么类型?有没有更快的方法从模型对象中获取主键值?

启用SQLAlchemy 调试并查看执行了哪些SQL 查询。我的假设是您有一个根据 SQLAlchemy 过期的对象,当您尝试获取第一个属性时,它必须从数据库中读取数据。当你再次做同样的事情时(在任何属性上),它应该再次变快。如果您从数据库中获取一些对象,提交会话,然后再次尝试使用先前获取的对象,通常会发生这种情况。发生这种情况是因为在提交时,SQLAlchemy 不知道其他事务是否未修改数据,因此它必须再次获取它们。