SQLAlchemy:修剪常见的数据库列前缀

时间:2014-07-18 14:26:36

标签: python sqlalchemy

我有一个数据库,其中每个表都有一个所有列的公共前缀(可能是为了避免别名)。像这样:

CREATE TABLE
    PERSON
    (
       PER_GUID RAW(16) DEFAULT SYS_GUID() NOT NULL,
       PER_FIRSTNAME NVARCHAR2(50),
       PER_LASTNAME NVARCHAR2(50),
       PRIMARY KEY (PER_GUID)
     )

现在,在将此架构映射到SQLAlchemy ORM(使用declarative_base)时,我希望在将其映射到对象时删除前缀。

我当然可以手动完成:

class Person(Base):
    __tablename__ = 'person'

    guid = Column('per_guid', RAW, primary_key = True)
    firstname = Column('per_firstname', String)
    lastname = Column('per_lastname', String)

但除了所有冗余类型之外,这将绕过声明性映射的一些好处。基本上我需要__mapper_args__ = {'column_prefix': 'per_'}的倒数,它是我的属性的前缀。

这样做的恰当方法是什么?我是否必须捕获一些映射事件?用自定义基类做一些事情?前缀的长度各不相同,但它们都以下划线结尾,因此通用的不需要指定的确切表前缀的东西也可以起作用。

0 个答案:

没有答案