3

我正在使用 sqlalchemy,并且来自使用 ruby​​/rails activerecord 和 datamapper 学习 orm,它有点不同。

所以,有一些模型并且需要我认为的类和实例级别的方法,我看到 python 没有这样做,或者我到目前为止理解的 python 级别没有这样做。为模型构建新方法的pythonic方法是什么:装饰器、制作模块和导入方法等?我需要做各种各样的事情,所以没有具体的编码问题,只是一个一般性的请求,要求指导如何有效地使用 sqlalchemy 处理模型,其中需要处理模型特定的方法。

注意:这不是讨论语言细节的邀请,我只提及我到目前为止所学到的知识以及如何将其应用于新情况。

4

1 回答 1

10

您可以将模型方法作为模型定义上的类方法。例如:

class User(object):

    @classmethod
    def get_by_username(cls, dbsession, username):
        return dbsession.query(cls).filter(cls.username==username).scalar()

mapper(User, tables.auth_user,
    properties={
        ...
        }
    )

允许您将类用作表特定方法的容器。像这样:

user = User.get_by_username(session, "me")
于 2012-05-06T01:31:34.460 回答