Поддержка Flask-SQLAlchemy отражения SQLAlchemy, похоже, не работает для меня совершенно правильно. У меня есть вид my_view
, который я хочу задумать через autoload
.Получение sqlalchemy зрения отражения для работы в flask-sqlalchemy
Но я хочу, чтобы my_view
был богатым объектом и имел различные функции, поэтому я хочу my_view
подкласса db.Model
. Я хочу, чтобы он в значительной степени работал, как и любая другая модель db, которая не является точкой зрения.
Я делаю это так:
class MyView(db.Model):
__tablename__ = 'my_view',
__table_args__ = (
db.UniqueConstraint('id', 'start_date'),
{
'autoload': True,
'autoload_with': db.engine
}
)
...my column defs...
...extra functionality...
Но во время приложения время загрузки я получаю сообщение об ошибке:
<snip>
File "env/lib/python3.4/site-packages/sqlalchemy/dialects/postgresql/base.py", line 2325, in get_columns
info_cache=kw.get('info_cache'))
File "<string>", line 2, in get_table_oid
File "env/lib/python3.4/site-packages/sqlalchemy/engine/reflection.py", line 54, in cache
ret = fn(self, con, *args, **kw)
File "env/lib/python3.4/site-packages/sqlalchemy/dialects/postgresql/base.py", line 2223, in get_table_oid
raise exc.NoSuchTableError(table_name)
sqlalchemy.exc.NoSuchTableError: ('my_view',)
Однако, если я использую db.Table
вместо db.Model
это работает:
MyView = db.Table(
'my_view',
db.metadata,
...my column defs...
autoload=True,
autoload_with=db.engine
)
Я действительно хочу иметь объект и использовать db.Model
, хотя, поэтому я могу реализовать __eq__()
и __json__()
и быть в состоянии делать такие вещи, как:
my_view_rows = session.query(MyView)\
.order_by(MyView.column_a)\
.all()
Любой знает, почему версия моего кода db.Model
не работает? Что мне нужно сделать, чтобы заставить его работать?