Можно ли переименовать атрибут метаданных декларативной базы SQLAlchemy? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь настроить базу данных с несколькими конкретными полями (и я не могу отойти от спецификации). Одним из полей будет столбец с именем metadata, но sqlalchemy предотвращает это:

sqlalchemy.exc.InvalidRequestError: Attribute name 'metadata' is reserved for the MetaData instance when using a declarative base class.

Есть ли достойный обходной путь для этого? Нужно ли мне monkeypatch для функции declarative_base, чтобы переименовать атрибут metadata? Я не смог найти опцию переименовать этот атрибут в api docs .

Вот пример кода, который завершится с ошибкой выше:

#!/usr/bin/env python3.7

from sqlalchemy.ext.declarative import declarative_base, declared_attr
from sqlalchemy import Column, Integer


class CustomBase(object):

    @declared_attr
    def __tablename__(cls):
        return cls.__name__.lower()

DBBase = declarative_base(cls=CustomBase)


class Data(DBBase):
    id = Column(Integer, primary_key=True)
    metadata = Column(Integer)

if __name__ == "__main__":
    print(dir(Data()))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...