2014-07-17 2 views
2

피어 (python3) 데이터베이스가있는 ORM을 구축 중입니다.peewee에서 모델 필드로 python 키워드 사용

이제 한 테이블에서 문제가 발생하여 클래스 속성으로 소개해야하는 import 열이 있습니다. 이것은 물론 파이썬 언어의 키워드이기 때문에 간단하지 않습니다. 다른 방법으로 필드의 이름을 변경하는 방법이 있습니까? 열의 이름을 변경할 수 없기 때문에 다른 시스템에서 큰 부작용이 발생합니다.

+1

당신은 (import_''같은) 뭔가 다른 클래스의 속성 이름을 변경하고 필드에 db_column = 'import'''에 전달할 수 있습니다. – Blender

+0

완벽. 이제는 공식 문서에서도 발견했습니다. 나는 처음부터 그것을 건너 뛰어야 만합니다. –

답변

3

사용 db_column 속성 :

class MyModel(Model): 
    import_ = CharField(db_column='import') 
1

import이라는 클래스 속성을 만들 수 있습니다.

In [1]: class Test(object): 
    ...:  locals()['import'] = 1 
    ...:  

In [2]: getattr(Test, 'import') 
Out[2]: 1 

In [3]: setattr(Test, 'import', 2) 

In [4]: getattr(Test, 'import') 
Out[4]: 2 

당신은이 클래스의 사용자 정의 메타 클래스를 사용 import의 값을 수정하는 @property 이름 import_를 추가 getattrsetattr에 액세스를 숨길 수 : 단점은 항상 프로그래밍 방식으로 접근해야한다는 것입니다. 따라서 파이썬 코드에서 import_을 사용할 수 있으며 import 속성은 자동으로 동기화됩니다.

또는 원하는 방식으로 import 특성을 처리 할 사용자 지정 __getattr__을 정의하는 메타 클래스를 사용할 수도 있습니다.

+0

감사합니다. 하지만 제 경우에는 Bleder의 해결책이 더 실현 가능합니다. 그럼에도 불구하고 이것은 알고있는 것이 좋다! –