将列的一部分定义为sqlalchemy中的唯一字段

时间:2010-06-20 20:24:44

标签: python sqlalchemy

在sqlalchemy 0.5中,我有一个像这样定义的表:

orders = Table('orders', metadata,
    Column('id', Integer, primary_key=True),
    Column('responsable', String(255)),
    Column('customer', String(255)),    
    Column('progressive', Integer),
    Column('date', Date),
    Column('exported', Boolean()),    
)

是否可以仅将客户和日期定义为唯一? 年份不是列只是日期的一部分,但是将日期和客户作为表的单个键可能会很好。 是否有可能在sqlalchemy 0.5?

由于

3 个答案:

答案 0 :(得分:1)

如果不将日期字段拆分为月份字段,日期字段和年份字段,那么实际上无法按照您的要求进行操作。你可以(可能)更简单,更简单地将整个日期(月/日/年)包含在复合主数据中; if(id,year)唯一地定义一条记录,那么(id,date)也是如此。

答案 1 :(得分:0)

documentation

  

可以分配多列   primary_key =表示a的真旗   多列主键,称为   复合主键。

答案 2 :(得分:0)

您可以在约束中使用函数,但它不是数据库独立的。有关详细信息,请参阅此处:Compound UniqueConstraint with a function

但是我认为最好的办法是创建一年的专栏。这肯定会更容易。