【问题标题】:How to query a SQL View from flask-SQLAlchemy如何从 flask-SQLAlchemy 查询 SQL 视图
【发布时间】:2021-11-25 06:14:32
【问题描述】:

我已获得对数据库(MySQL,以防万一)的访问权限以访问我需要的一些数据,但我无法直接访问表,数据通过 SQL 视图公开。

我想用烧瓶把它封装在一个小的 API 中。对于数据库连接,我打算使用 SQLAlchemy(只是因为它是我在 python 中知道的唯一数据库包装器)。

问题是,我通过互联网阅读了很多文档,以及数十篇 stackoverflow 帖子和指南,但我似乎无法找到从 flask-SQLAlchemy 查询 SQL 视图的方法。

在文档中,他们总是使用模型。我试图将我的视图定义为模型,但我得到了could not assemble any primary key columns for mapped table 'MySQLView'

我想做什么:

class MyView(db.Model):
    __tablename__ = "my_view_name_in_sql"
    db.Column("id", db.Integer, primary_key=True)
    db.Column("sample_id", db.String)
    {...etc}

有没有办法做到这一点,或者我应该选择不使用 flask-SQLAlchemy 并改用其他东西?

【问题讨论】:

    标签: python mysql sqlalchemy


    【解决方案1】:

    我认为这里有一些答案可以解决您的问题,尤其是 LeoRochael 的回答,他建议使用 https://pypi.org/project/sqlalchemy-views/ 包。 我建议检查您是否可以 - 或不能访问数据库的元数据,我认为这确实可以帮助您避免手动制作模型

    db_engine = sqlalchemy_package.create_engine("mysql+...")
    db_metadata = db.MetaData(bind=db_engine)
    

    然后您可以尝试直接制作表格,或使用元数据制作类似于我链接的答案中的视图。

    your_table = db.Table("my_view_name_in_sql", db_metadata, autoload=True)
    view_definition = your_table.select()
    your_view = CreateView(your_table, view_definition, or_replace=True)
    

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 2013-07-24
      • 2018-01-16
      • 1970-01-01
      • 2017-02-01
      • 2019-04-23
      • 2019-12-13
      • 2017-08-28
      • 1970-01-01
      相关资源
      最近更新 更多