Передача переменной в сопоставленные классы Sqlalchemy

Я использую 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 () и значений, извлекаемых из файла конфигурации.

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

Ilja Everilä 28.03.2018 09:42

Связанный: stackoverflow.com/questions/49409691/…

Ilja Everilä 28.03.2018 09:49
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
388
0

Другие вопросы по теме