2017-02-15 1 views
1

Мне нужно прочитать схему базы данных postgres с помощью python. Я уже могу прочитать имена таблиц и столбцов, используя,Python: Чтение отношений (таблицы внешних ключей) PostgreSQL Таблица

cursor.execute(
    "select relname 
    from pg_class 
    where relkind='r' and relname !~ '^(pg_|sql_)';") 

и,

cursor.execute("Select * FROM " + table_name) 
colnames = [desc[0] for desc in cursor.description] 

Я хочу читать отношения между таблицами, а также. Кто-нибудь знает как это сделать?

+0

Я хотел бы начать с '' information_schema.key_column_usage' и information_schema.table_constraints'. Обратите особое внимание на столбцы «constraint_schema» и «table_schema». Вы можете иметь идентичные имена таблиц в нескольких схемах. –

ответ

-1

Пожалуйста, попробуйте использовать этот запрос, он должен работать хорошо:

cursor.execute("""SELECT 
    tc.constraint_name, tc.table_name, kcu.column_name, 
    ccu.table_name AS foreign_table_name, 
    ccu.column_name AS foreign_column_name 
FROM 
    information_schema.table_constraints AS tc 
    JOIN information_schema.key_column_usage AS kcu 
     ON tc.constraint_name = kcu.constraint_name 
    JOIN information_schema.constraint_column_usage AS ccu 
     ON ccu.constraint_name = tc.constraint_name 
WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name='+ table_name +'""")