В SqlAlchemy, как я могу создать UniqueConstraint с частью даты столбца DateTime и другого столбца? - PullRequest
0 голосов
/ 19 сентября 2019

Допустим, у меня есть такая модель:

from sqlalchemy import Column, DateTime, ForeignKey, Text

class Foo(declarative_base):
    __tablename__ = "foos"
    my_dt = Column(DateTime...)
    my_other_value = Column(Integer...)

Я пытаюсь создать UniqueConstraint, используя нотацию SqlAlchemy, которая допускает только один my_other_value в день,это означает, что я хотел бы извлечь Date часть my_dt и однозначно ограничить ее my_other_value

Я знаю (э-э ... я довольно уверен, что знаю , а точнее) как это сделать в PostgreSQL:

CREATE UNIQUE INDEX unique_num_and_date 
ON foos(my_other_value, date_trunc('day',my_dt));

но просто из соображений краткости, я хотел бы отразить это с помощью SqlAlchemy.

1 Ответ

0 голосов
/ 19 сентября 2019

Попробуйте что-то вроде этого:

class MyModel(Base):
    __tablename__ = 'my_model'
    __table_args__ = (UniqueConstraint('name', 'deleted_at'),)
    name = Column(String(length=64), nullable=False)
    deleted_at = Column(DateTime(), nullable=True)
...