0

我正在尝试使用 Python 从基于数据库中其他视图创建的视图中读取数据。

数据库设置:

Redshift-postgres
  dev
    Schemas
      schema_name
        Tables
          table_name
        Views
          view_name

Python代码:

connection=psycopg2.connect("dbname=dev host=redshift.amazonaws.com port=5439 user=user password=password")

cursor = connection.cursor()
schema = "SELECT count(*) FROM schema_name.table_name;"
schema2 = "SELECT count(*) FROM schema_name.view_name;"
result = pd.read_sql(schema, connection)

当我使用它运行代码时,schema它会从表中返回数据,但是当我尝试运行schema2它时,它不会返回任何内容,也不会提供任何错误消息。该脚本不会停止它只是闲置。

尝试从视图而不是表中获取数据时,我做错了什么吗?

更新

当我运行schema2 = "SELECT * FROM INFORMATION_SCHEMA.TABLES;"它确实返回以下内容:

table_catalog    table_schema   table_name  table_type 
dev              schema_name    view_name         VIEW    

它列出了我试图从中读取数据的视图。

我像这样创建了视图:

CREATE OR REPLACE VIEW schema_name.view_name
AS SELECT *
        CASE
            WHEN statement
            ELSE false
        END AS column_name, 

   FROM schema_name.another_view_name
   LEFT JOIN schema_name.another_view_name_2 data_1 ON data_2 = data_3
   LEFT JOIN schema_name.another_view_name_3 data_4 ON data_5 = data_6

我已经命名data_x了我根据某些条件加入视图的不相关数据。

4

1 回答 1

0

结果发现,amazon redshift DB 被堵塞了,并且有 5 个查询运行了 4 天而没有任何响应。无论如何,我仍然发现从具有 2 个左连接的视图中读取需要 3 个小时才能阅读,这不是它应该如何工作的。该视图只有 1.2m 行。谢谢你的建议。

于 2020-02-21T07:41:27.063 回答