【问题标题】:Query a PostgreSQL view created by SQLAcodegen查询由 SQLAcodegen 创建的 PostgreSQL 视图
【发布时间】:2016-02-23 11:45:25
【问题描述】:

我有一个有用的 PostgreSQL 视图,由 JOIN 查询生成:

\d very_useful_view;
 View "public.very_useful_view"
   Column    |    Type     | Modifiers
-------------+-------------+-----------
 tree_id     | dom_treeid  |
 title       | text        |
 grass_id    | dom_grass   |
 name        | text        |
 street_uuid | uuid        |

视图由SQLAcodegen 建模为以下对象:

t_very_useful_view = Table(
    'very_useful_view', metadata,
    Column('tree_id', String),
    Column('title', Text),
    Column('grass_id', Text),
    Column('name', Text),
    Column('street_uuid', UUID)
)

正常查询按预期工作:

print session.query(t_very_useful_view).all()

但是,过滤 -

print session.query(t_very_useful_view).\
    filter(t_very_useful_view.tree_id == some_tree_id).\
    all()

加注:

AttributeError: 'Table' object has no attribute 'tree_id'

知道我在视图映射中缺少什么吗?

【问题讨论】:

    标签: postgresql sqlalchemy sql-view sqlacodegen


    【解决方案1】:

    Table 对象should be accessed with the columns property 的列:

    print session.query(t_very_useful_view).\
        filter(t_very_useful_view.columns.tree_id == some_tree_id).\
        all()
    

    这与 declarative_base() 的子类形成对比,后者将列公开为根级对象属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多