Я пытаюсь прочитать данные из созданного мною представления на основе других представлений в моей базе данных, используя Python.
Настройка базы данных:
Redshift-postgres
dev
Schemas
schema_name
Tables
table_name
Views
view_name
Python code:
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
, где я объединяю представления, основываясь на некоторых условиях.