Python - 传递 SQLAlchemy 模型或 id 号更好吗?再次查询?

Python - Is it better to pass an SQLAlchemy model, or an id no. to query again?

示例代码:

def primary_function(object_id):
    some_object = SomeObject.query.get(object_id)
    # Do stuff here
    secondary_function(unknown_parameter)


def secondary_function(unknown_parameter):
    # Do more stuff here

两个函数都需要访问 some_object。将 unknown_parameter 作为对象本身是否更有效,还是将其作为 object_id,然后再次调用 SomeObject.query.get(object_id) 会更好?

我在文档中没有看到任何关于此的信息(尽管我想我可能漏掉了一些东西),我在这里找到的所有其他问题都是针对其他语言的,并且答案不一。

通常,当您使用 ORM 时,您会执行第二种,但作为一种方法:

class Foo(Model):
    def bar(self, param):
        ... work on self ...

如果您传入 object_id,这对批量操作很有用,但请考虑传入查询集是否更适合您的用例:

def bar1(object_id, param):
    queryset = session.query(Foo).where(id=object_id)
    bar2(queryset, param)

def bar2(queryset, param): 
    queryset.update(...)

这样,当更新单行或查询集具有更复杂的 WHERE 子句时,您可以使用相同的方法 (bar2)。