Я использую sqlalchemy.orm и определяю свои объекты таблицы следующим образом (для краткости обрезаны):
class my_table(Base):
__tablename__ = 'my_data'
__table_args__ = { 'schema': self.db_schema }
foo = Column(String, nullable=False)
@orm.reconstructor
def __init__(self, schema):
self.db_schema = schema
Я хочу иметь возможность передавать переменные при создании этого класса, как указанная выше переменная db_schema. Документы, похоже, подразумевают, что для этого используется декоратор @ orm.reconstructor, но я не могу понять, как реализовать этот подход.
Мой пример выше жалуется:
NameError: name 'self' is not defined
Этот класс определен в библиотеке, и данные, которые я хочу передать ему во время создания, извлекаются из комбинации аргументов командной строки в main () и значений, извлекаемых из файла конфигурации.
Связанный: stackoverflow.com/questions/49409691/…






Жалуется не реконструктор. В теле класса нет
self(ваше определение__table_args__). Кроме того, если вы немного прочитаете документацию, вы заметите, что «Реконструктор будет вызываться без аргументов». и поэтому упаковка__init__может быть не лучшим решением. В общем, нет необходимости устанавливатьself.db_schemaв вашем реконструкторе. Схема высечена в камне при построении класс.