首页 > 解决方案 > 来自 sqlalchemy-bind 表的烧瓶视图不起作用

问题描述

我正在使用 python 3.6.5、flask 1.0.2、flask-admin、flask-sqlalchemy

我在显示第二个数据库中的表视图时遇到问题,sqlalchemy 绑定配置,模型数据库,模型视图似乎都可以,但是应用程序中没有显示视图,当我尝试通过 URL 强制它时,出现权限消息。

我检查了绑定配置,当我评论该行时,会出现预期的错误。

我还从主数据库的表中删除并添加了一些其他视图,所有这些都运行良好。

我尝试了不同的方法来引用 db.session:

db.session #like always
db.session(bind=['login'])
db.get_engine(app, 'login')

没有一个报告任何错误,但视图不起作用。

SQLALCHEMY_BINDS 配置:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:pass@localhost/radius'
SQLALCHEMY_BINDS = {
        'login': 'mysql+pymysql://user:pass@localhost/login_radisp'
}

数据库型号:

class Empleado(db.Model):
    __bind_key__ = 'login_radisp'
    __tablename__ = 'empleados'
    id_empleado = Column(INTEGER, primary_key=True)
    nombre = Column(String(255))
    apellido = Column(String(255))
    email = Column(String(255))

数据库模型视图

class EmpleadoAdmin(sqla.ModelView):
    column_labels = dict(
        nombre = 'Nombre',
        apellido = 'Apellido',
        telefono = 'Teléfono',
        email = 'Email'

创建应用程序构建器对象:

admin.add_view(EmpleadoAdmin(Empleado, db.session(bind=['login'])))

根本没有错误,但是应用程序中没有显示视图,当我尝试在 URL 中强制视图时,会出现下一条消息:

Forbidden

You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.

标签: pythonmysqlflaskflask-sqlalchemymultiple-databases

解决方案


这是一个数据库访问问题,而不是烧瓶管理问题。检查您的“SQLALCHEMY_BINDS”访问权限


推荐阅读