Specify 'extend_existing=True' to redefine options and columns on an existing Table object.
внезапно стала появляться такая ошибка при попытке сделать что-нибудь с моделью User. Если поменять tablename на другой, ошибка повторится.
Может ли это быть связано с тем, что тесты и само приложение используют одну метадату?
как метадата определена?
ну саму метадату не настраивал, просто есть BaseModel с переопределенным repr для классов-наследников. И от BaseModel наследуются все модели
Так, а как создаются таблицы?
https://gist.github.com/kindaway/d210866b1ed3c5efbcd7cee04d67d031
нет, я имею ввиду, у тебя что дублируются модели для тестов?
в смысле что я скопировал код моделек для тестов? Нет, такого не делал
хорошо, а на каком этапе ошибка возникает? скинь полный трейс
при любом взаимодействии с моделью. Даже если просто попытаться запустить файл, где лежит модель
настройки sessionmaker и engine какие-нибудь ставил?
в приложении -- только связанное с автофлашем и настройками пула, а в тестах у sessionmaker стоит join_transaction_mode="create_savepoint"
ну такое в теории могло быть с autoload, но раз так, то всё больше похоже, что у тебя один и тот же файл по каким-то причинам определяется 2 раза, либо метадата каким-то чудом остается с прошлой сессии
да, похоже на то. Я даже почистил pycache, потому что к в гугле кому-то это помогло) пойду перепроверю импорты
можно еще попробовать проверить, что выключена какая-либо подгрузка таблиц из базы данных (MetaData.reflect=False, Table.keep_existing=False, Session.auto_load=False)
а где это указать? сейчас посмотрел через дебаггер, к моменту определения класса Interest в метадате лежат данные о нескольких таблицах, но таблицы interests то там нет...
Обсуждают сегодня