2009-11-16 2 views
1
class MyObject(Entity): 
    name = Field(Unicode(256), default=u'default name', nullable=False) 

    using_options(shortnames=True) 
    using_mapper_options(save_on_init=False) 

    def __init__(self): 
     self.name = None 

이 경우 MySQL을 사용하고 있지만 SQLite와 비교해도 동일한 결과가 나옵니다. nullable을 무시하지만 전체적으로 default은 무시합니다. 나는 어떤 오류 메시지도 얻지 않으며, 테이블을 잘 만듭니다. 나는 다시 돌아가서 기본값을 추가 할 수 있지만 이것이 가능한 한 피하려고하는 심각한 고통이다.엘릭서가 기본값으로 내 테이블을 만들지 않습니다.

나는 다른 필드 유형으로 시도했지만 여전히 기쁨이 없습니다.

답변

2

default SQLAlchemy의 키워드 인수는 Python 런타임의 기본값이며 INSERT 문에 사용됩니다. 실제로 데이터베이스 수준 기본값이 필요할 때 PassiveDefault() 개체를 위치 인수로 사용하십시오.

+0

감사합니다. 나는 이것으로 정말로 혼란스러워했다. –

+0

나는 혼란스러워했다. 하지만 그런 행동을 아주 편리하게 찾았습니다. SQLAlchemy 레이어가없는 곳에서 사용되지 않는 한 기본값을 변경할 때 데이터베이스 스키마를 업데이트 할 필요가 없습니다. –

+0

@Denis Otkidach, 고맙습니다. 정답입니다. – MyMy

관련 문제