LINUX.ORG.RU

SqlAlchemy и Enum (Postgres)


0

1

Пользовался ли кто sqlalchemy.Enum'ами, особенно с postgres?

Можете ли отсыпать примитивный пример?

class ReutersArticle(Base): __tablename__ = «articles» id = Column(Integer, primary_key = True, index=True) newId = Column(Integer) lewisSplit = Column(Enum(«TRAIN», «TEST», «NOT-USED», name = «LewisSplit»)) cgiSplit = Column(Enum(«TRAINING-SET», «PUBLISHED-TESTSET», name = «CGISplit»)) numOfTopics = Column(Integer, index = True) title = Column(String) text = Column(String)

....

newArticle.lewisSplit = Enum(«TRAIN») newArticle.cgiSplit = Enum(«TRAINING-SET»)

....

session.add(newArticle)

Мне выдают ошибку:

sqlalchemy.exc.ProgrammingError: (ProgrammingError) can't adapt type 'Enum' 'INSERT INTO articles («newId», «lewisSplit», «cgiSplit», «numOfTopics», title, text) VALUES (%(newId)s, %(lewisSplit)s, %(cgiSplit)s, %(numOfTopics)s, %(title)s, %(text)s) RETURNING articles.id' {'numOfTopics': 1, 'title': u'BAHIA COCOA REVIEW', 'text': u'blabablablablablablabla\n', 'lewisSplit': Enum('TRAIN'), 'newId': 1, 'cgiSplit': Enum('TRAINING-SET')}

Как забороть?


Это конечно ололо-ололошечки, но ошибку видно невооруженным взглядом.

вместо:

newArticle.lewisSplit = Enum("TRAIN")
newArticle.cgiSplit = Enum("TRAINING-SET")

надо:

newArticle.lewisSplit = "TRAIN" 
newArticle.cgiSplit = "TRAINING-SET"

beka ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.