Python SqlAlchemy – AttributeError: mapper

основанный на моей модели:

from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, ForeignKey from sqlalchemy.orm import relationship Base = declarative_base() class Session(Base): __tablename__ = 'sessions' id = Column(Integer, primary_key=True) token = Column(String(200)) user_id = Column(Integer, ForeignKey('app_users.id')) user = relationship('model.user.User', back_populates='sessions') 

Я хочу создать новый сеанс через:

  • Нет атрибута «SMTP», ошибка при попытке отправить электронную почту на Python
  • Python regex AttributeError: объект 'NoneType' не имеет атрибута 'group'
  • __getattr__ на модуле
  • python "import datetime" vs "из datetime import datetime"
  • Python: доступ к функции DLL с использованием ctypes - доступ по функции * имя * не работает
  • AttributeError: объект 'module' не имеет атрибута 'cbook'
  •  session = Session(token='test-token-123') 

    Но я получаю:

     AttributeError: mapper 

    Полная стек:

     Traceback (most recent call last): File "/home/ubuntu/.local/lib/python3.5/site-packages/falcon/api.py", line 227, in __call__ responder(req, resp, **params) File "./app_user/register.py", line 13, in on_post session = Session(token='test-token-123') File "<string>", line 2, in __init__ File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/instrumentation.py", line 347, in _new_state_if_none state = self._state_constructor(instance, self) File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/util/langhelpers.py", line 764, in __get__ obj.__dict__[self.__name__] = result = self.fget(obj) File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/instrumentation.py", line 177, in _state_constructor self.dispatch.first_init(self, self.class_) File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/event/attr.py", line 256, in __call__ fn(*args, **kw) File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/mapper.py", line 2976, in _event_on_first_init configure_mappers() File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/mapper.py", line 2872, in configure_mappers mapper._post_configure_properties() File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/mapper.py", line 1765, in _post_configure_properties prop.init() File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/interfaces.py", line 184, in init self.do_init() File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/relationships.py", line 1653, in do_init self._process_dependent_arguments() File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/relationships.py", line 1710, in _process_dependent_arguments self.target = self.mapper.mapped_table File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/util/langhelpers.py", line 850, in __getattr__ return self._fallback_getattr(key) File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/util/langhelpers.py", line 828, in _fallback_getattr raise AttributeError(key) 

    Я понятия не имею, откуда эта ошибка, и я не могу ее отладить. Кто-нибудь может помочь мне в этой проблеме?

    Спасибо и приветствую!

  • Python regex AttributeError: объект 'NoneType' не имеет атрибута 'group'
  • Нет атрибута «SMTP», ошибка при попытке отправить электронную почту на Python
  • Python: доступ к функции DLL с использованием ctypes - доступ по функции * имя * не работает
  • Python3 AttributeError: объект 'list' не имеет атрибута 'clear'
  • AttributeError: объект 'module' не имеет атрибута 'cbook'
  • __getattr__ на модуле
  • One Solution collect form web for “Python SqlAlchemy – AttributeError: mapper”

    Посмотрев на трассировку, вы можете увидеть следующие строки:

      ... File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/relationships.py", line 1653, in do_init self._process_dependent_arguments() File "/home/ubuntu/.local/lib/python3.5/site-packages/sqlalchemy/orm/relationships.py", line 1710, in _process_dependent_arguments self.target = self.mapper.mapped_table ... 

    которые значительно сокращают вашу проблему. Отношение

      user = relationship('model.user.User', back_populates='sessions') 

    использует в качестве аргумента строку, оцениваемую Python, использование которой далее объясняется в разделе «Настройка отношений» :

    Отношения с другими классами выполняются обычным способом, с добавленной функцией, которую класс, указанный для relationship() может быть именем строки. «Реестр классов», связанный с Base , используется во время компиляции карты, чтобы разрешить имя в фактический объект класса, который, как ожидается, будет определен после использования конфигурации сопоставления

    Если вы не импортировали модуль models.user где-нибудь, прежде чем пытаться создать экземпляр объекта Session в первый раз, тогда разрешение имени не будет выполнено, потому что класс User еще не создан и не существует в реестре. Другими словами, для разрешения имени для работы все классы должны быть определены, что означает, что их тела должны быть выполнены.

    И если вы действительно импортировали модуль models.user , проверьте свои другие модели и определили связанные с ними классы моделей. Использование ваших моделей в первый раз запускает компиляцию / конфигурацию картографа, поэтому источником ошибки могут быть и другие модели .

    Python - лучший язык программирования в мире.