SQLAlchemy - ModuleMarker Errror в некоторых классах таблиц - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть простой класс, который обращается к таблице для хранения времени выполнения.Однако, когда я пытаюсь импортировать класс, я получаю следующую ошибку:

AttributeError: '_ModuleMarker' object has no attribute 'add_item'

Я смог определить, что это связано с настройкой имени таблицы и столбцов, так как у меня есть 2 других класса, обращающихся к двумразные таблицы, и он работает нормально там.Я в основном скопировал вставленный код из 2 оригинальных классов, поэтому я не уверен, почему он не работает.

Есть ли способ, которым я могу создать более полезный код ошибки?

RunTimes Class

from sqlalchemy import Column
from sqlalchemy import String
from sqlalchemy import TIMESTAMP
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('postgresql+psycopg2://postgres@localhost/reseller', encoding='utf-8', pool_size=50, max_overflow=200)
session = sessionmaker(bind=engine)()

Base = declarative_base()

class RunTimes(Base):
    __tablename__ = 'run_times'
    store = Column(String, primary_key=True, index=True, unique=True)
    start_time = Column(TIMESTAMP)
    end_time = Column(TIMESTAMP)

    def __init__(self, store):
        self.store = store
        results = session.query(RunTimes).filter(RunTimes.store.like(store)).first()
        self.start_time = results.start_time
        self.end_time = results.end_time

    def Update(self):
        session.merge(self)
        session.commit()

test.py

from RunTimes.RunTimes import RunTimes
rt = RunTimes("Store")

1 Ответ

0 голосов
/ 06 февраля 2019

У меня была та же проблема, и оказалось, что эта ошибка возникла из-за того, что мой класс, унаследованный от Base, имел то же имя, что и файл python, и пакет python, в котором он был определен.Здесь я вижу по вашим test.py, что это тоже так.Попробуйте использовать разные имена для пакета, файла и класса.

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