使用SQLAlchemy仅将类的某些部分映射到数据库?

时间:2010-03-25 20:54:22

标签: python database sqlalchemy

使用SQLAlchemy映射对象时,有没有办法只将类的某些元素映射到数据库,还是必须是1:1映射?

示例:

class User(object):
    def __init__(self, name, username, password, year_of_birth):
        self.name = name
        self.username = username
        self.password = password
        self.year_of_birth = year_of_birth

说出来,无论出于何种原因,我只希望将nameusernamepassword映射到数据库,而忽略year_of_birth。这可能会产生问题吗?

Edit - 25/03/2010

此外,我想将usernameyear_of_birth映射到单独的数据库。此数据库和上面的数据库是否仍然连接(通过username)?

1 个答案:

答案 0 :(得分:2)

您的映射器可以指定要映射的列,甚至可以将单个表映射到多个对象,将多个表映射到单个对象。

以下是多次映射单个对象的文档:http://www.sqlalchemy.org/docs/05/mappers.html#multiple-mappers-for-one-class

您想要的是配置要映射/不映射的列。这可以通过自定义列属性来完成。文档:http://www.sqlalchemy.org/docs/05/mappers.html#customizing-column-properties

示例:

mapper(User, users_table, include_properties=['user_id', 'user_name'])

mapper(Address, addresses_table, exclude_properties=['street', 'city', 'state', 'zip'])