Проблемы с подключением python/pandas к БД Postgress, размещенной на Django Digital Ocean

У меня возникают трудности с поиском известных мне таблиц в БД Django/Postgress, размещенной на Digital Ocean. Кажется, что я получаю только внешний слой базы данных, но не таблицы, работающие на фронт-энде сайта.

conn = psycopg2.connect(
    host=HOST,
    database=DATABASE,
    user=USERNAME,
    password=PASSWORD,
    port=PORT,
)

cur = conn.cursor()
cur.execute("""SELECT table_name FROM information_schema.tables""")
for table in cur.fetchall():
    print(table)

Вот часть результатов, и ни один из них не является известной настольной книгой.

('pg_type',)
('pg_foreign_server',)
('pg_roles',)
('pg_settings',)
('pg_cursors',)
('pg_stat_bgwriter',)
('pg_subscription',)
('pg_stat_progress_vacuum',)
('pg_stat_progress_cluster',)
('pg_attribute',)
.
.
.
('view_table_usage',)
('foreign_server_options',)
('column_options',)
('foreign_data_wrapper_options',)
('foreign_tables',)
('foreign_data_wrappers',)
('foreign_servers',)
('foreign_table_options',)
('user_mappings',)
('user_mapping_options',)

Я надеюсь, что наконец-то побегу:

df = pd.read_sql('select * from books', my_eventual_successful_connection)

Я получаю более обескураживающие результаты от SQLAlchemy, которая не выводит результат и не регистрирует информацию для следующего:

engine = create_engine(f"postgresql+psycopg2://doadmin:{PASSWORD}@{HOST}:{PORT}/{USERNAME}?sslmode=require")

from sqlalchemy import MetaData
metadata_obj = MetaData()
for t in metadata_obj.sorted_tables:
    print(t.name)

Пока это:

metadata_obj.tables.keys()

возвращает (включая протоколирование):

INFO:sqlalchemy.engine.Engine:SELECT c.relname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = %(schema)s AND c.relkind in ('r', 'p')
INFO:sqlalchemy.engine.Engine:[cached since 38.66s ago] {'schema': 'public'}

dict_keys([])

Хотя когда я запускаю:

with engine.connect() as connection:
    df = pd.read_sql('select * from user', connection)

df

Я получаю

user
0 doadmin

примечание doadmin является переменной USERNAME

Наконец, в результате запроса известных таблиц я получаю следующее:

ProgrammingError: (psycopg2.errors.UndefinedTable) relation "books" does not exist
LINE 1: select * from books

Есть идеи?

Спасибо

Все, что для этого потребовалось, это перейти на управляемую БД.

Вернуться на верх