피어 (python3) 데이터베이스가있는 ORM을 구축 중입니다.peewee에서 모델 필드로 python 키워드 사용
이제 한 테이블에서 문제가 발생하여 클래스 속성으로 소개해야하는 import
열이 있습니다. 이것은 물론 파이썬 언어의 키워드이기 때문에 간단하지 않습니다. 다른 방법으로 필드의 이름을 변경하는 방법이 있습니까? 열의 이름을 변경할 수 없기 때문에 다른 시스템에서 큰 부작용이 발생합니다.
피어 (python3) 데이터베이스가있는 ORM을 구축 중입니다.peewee에서 모델 필드로 python 키워드 사용
이제 한 테이블에서 문제가 발생하여 클래스 속성으로 소개해야하는 import
열이 있습니다. 이것은 물론 파이썬 언어의 키워드이기 때문에 간단하지 않습니다. 다른 방법으로 필드의 이름을 변경하는 방법이 있습니까? 열의 이름을 변경할 수 없기 때문에 다른 시스템에서 큰 부작용이 발생합니다.
사용 db_column
속성 :
class MyModel(Model):
import_ = CharField(db_column='import')
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_
를 추가 getattr
및 setattr
에 액세스를 숨길 수 : 단점은 항상 프로그래밍 방식으로 접근해야한다는 것입니다. 따라서 파이썬 코드에서 import_
을 사용할 수 있으며 import
속성은 자동으로 동기화됩니다.
또는 원하는 방식으로 import
특성을 처리 할 사용자 지정 __getattr__
을 정의하는 메타 클래스를 사용할 수도 있습니다.
감사합니다. 하지만 제 경우에는 Bleder의 해결책이 더 실현 가능합니다. 그럼에도 불구하고 이것은 알고있는 것이 좋다! –
당신은 (import_''같은) 뭔가 다른 클래스의 속성 이름을 변경하고 필드에 db_column = 'import'''에 전달할 수 있습니다. – Blender
완벽. 이제는 공식 문서에서도 발견했습니다. 나는 처음부터 그것을 건너 뛰어야 만합니다. –