Проблемы с подключением 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
Есть идеи?
Спасибо
Все, что для этого потребовалось, это перейти на управляемую БД.