2017-02-15 8 views
1

私はpythonを使ってpostgresデータベーススキーマを読む必要があります。私はすでに、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

。 "constraint_schema"と "table_schema"の列には特に注意してください。複数のスキーマで同じテーブル名を使用することができます。 –

答えて

-1

それがうまく動作するはずです、このクエリを使用してみてください:私はinformation_schema.key_column_usage`と `` information_schema.table_constraints`で始めたい

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 +'""") 
関連する問題