자동 증가하는 속성으로 사용자 정의 논리에서의 정밀한 웹 애플리케이션을 빨리 빌
-
10-07-2019 - |
문제
내가 있는 간단한"송장"등을"수는"속성이 있는 에 할당할 때 응용 프로그램에 의해 사용자가 저장됩니다.가 은 일부 제약 조건:
1)응용 프로그램은(가)클라이언트-서버 중 하나,그래서 무엇이든
할당 번호를 위해 밖을 봐 충돌
2)송장은"버전이"너무 특성,그래서를 사용할 수 없습니다 간단하
DBMS 수준 자동 증가드
내가 노력하고 구축을 사용하여 이를 사용자 정의 형식에 킥 것 모든 시간는 송장에 구원을 받았습니다.때마다 process_bind_param 라 None 값을,호출하는 단일의 어떤 종류를 결정 번호 충돌을 피할 수 있습니다.이 괜찮은 솔루션?어쨌든,나는 데 문제가 발생할 수 있다.여기에서의 내용 유형:
class AutoIncrement(types.TypeDecorator):
impl = types.Unicode
def copy(self):
return AutoIncrement()
def process_bind_param(self, value, dialect):
if not value:
# Must find next autoincrement value
value = "1" # Test value :)
return value
내 문제 오른쪽 지금은 그 때 나는 저장하는 송장 및 자동 증가 세"1"으로 값의 번호,청구서 인스턴스 지 을 얻 업데이트와 함께 새로운 수 있습니다.정상입니까?나는 뭔가?에 대 한 많은 감사는 시간!
(SQLA0.5.3 에 Python2.6 를 사용하여,postgreSQL8.3)
편집: 마이클 바이엘 나에게 말했다는 이 행동은 예상되기 때문 TypeDecorators 를 다루지 않는 기본값으로 되돌릴 수 있습니다.
해결책
는 특별한 이유가 있나 당신은 단지 사용 default=
매개 변수에 정의 열?(이할 수 있는 임의의 Python 가능).
def generate_invoice_number():
# special logic to generate a unique invoice number
class Invoice(DeclarativeBase):
__tablename__ = 'invoice'
number = Column(Integer, unique=True, default=generate_invoice_number)
...
제휴하지 않습니다 StackOverflow