로 TABLENAME : 나는 매개 변수로 __tablename__
를 정의하고 싶은 사용자로서파이썬 SQLAlchemy의 - 내가 파이썬에서 SQLAlchemy의를 사용하고 다음과 같이 선언 기지에서 상속 내 클래스를 선언 오전
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class SomeClass(Base):
__tablename__ = 'some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
, 아닌 하드 코딩 된 값이 같은 :
class SomeClass(Base):
__tablename__ = f'{environment}_some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
그것은 f'{environment}_some_table'
은 내가이 패키지를 가져올 때 평가 될 것이다, 따라서 내가 나중 단계에서 수정할 수 없습니다 나의 이해입니다 (예 : 대화 형 노트북). 중첩 된 클래스와 캡슐화를 통해이를 해결하려고하는 깨진 코드 조각이 있지만 외부 클래스의 인스턴스 변수를 참조 할 수는 없습니다.
class Outer:
def __init__(self, env):
self.environment = env
class SomeClass(Base):
__tablename__ = f'{self.environment}_some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
이러한 클래스 사이에 특별한 관계가 설정되지 않았으므로 중첩 된 클래스를 사용하지 않는 것이 더 좋다고 두 가지 질문을 읽었습니다. 그래서이 문제를 해결하기 위해 어떤 종류의 디자인을 사용해야합니까?
미리 감사드립니다. 이 외부 인자에 의존 할 수 있도록
"'f '{environment} _some_table''이 (는) 런타임 전에 평가 될 것이라는 것은"런타임 "이 의미하는 바에 달려있다. 단어의 일반적인 의미에서 그것은 실제로 런타임에 평가됩니다. –
좋아요, 저는 실제로 런타임의 정의가 무엇인지 그리고 실제로 올바른지 확인했습니다. 이를 반영하기 위해 질문을 수정하겠습니다. 감사! – Pezze