2016-10-25 3 views
-2

파이썬을 사용하여 SQL 서버의 데이터베이스에 액세스합니다. 데이터베이스는 약 200 개의 테이블을 가지며 테이블 사이에 외래 키를 포함합니다.SQL 서버에서 외래 키를 사용하여 테이블을 자동으로 결합, pyodbc

데이터베이스에있는 외래 키를 사용하여 테이블에 자동으로 조인하고 싶습니다. 수동으로 수행하는 작업은 매우 지루합니다.

주어진 외부 키를 사용하여 테이블의 모든 가능한 조인의 팬더 데이터 프레임을 만들려면 어떻게해야합니까?

pyodbc으로, 나는 성공적 코드 줄과의 연결을 생성 한 후 각각의 특정 테이블을 얻을 수 있습니다

cnxn = pyodbc.connect("...") 
+0

는 분명 어떤 데이터베이스가 하나가 그들 사이의 외부 키를 가진 모든 두 테이블 사이의 조인을 계산하기 위해 필요로하는 모든 인 테이블과 그들 사이의 외부 키를 포함 @tuergeist 당신이 – tuergeist

+0

을 요구하고 있습니다. 몇 개의 큰 테이블을 만들 수있는 한 모든 테이블을 반복적으로 조인하고 싶습니다. – User9123

+0

파이썬이나 데이터베이스 질문인지 여부는 아직 불분명합니다. – tuergeist

답변

0

이 SQL의 표준 기능이 아닙니다. 관계 &에 대한 시스템 스키마 테이블을 쿼리 한 다음 왼쪽 조인을 사용하여 직접 쿼리를 작성해야합니다. 저는 현재 비슷한 것을 시도하고 있습니다. SQL Server와의 관계를 위해 사용하고있는 SQL이 있습니다.

with fKC as 
(
    select 
      sfkc.constraint_object_id 
      ,(select name from sys.objects as o where o.object_id=sfkc.constraint_object_id) as constraint_object_name 
      ,sfkc.parent_object_id 
      ,(select name from sys.objects as o where o.object_id=sfkc.parent_object_id) as parent_object_name 
      ,sfkc.parent_column_id 
      ,(select name from sys.columns as c where ((c.object_id=sfkc.parent_object_id)and(c.column_id=sfkc.parent_column_id))) as parent_column_name 
      ,sfkc.referenced_object_id 
      ,(select name from sys.objects as o where o.object_id=sfkc.referenced_object_id) as referenced_object_name 
      ,sfkc.referenced_column_id 
      ,(select name from sys.columns as c where ((c.object_id=sfkc.referenced_object_id)and(c.column_id=sfkc.referenced_column_id))) as referenced_column_name 
    from sys.foreign_key_columns as sfkc 
    where (sfkc.parent_object_id!=sfkc.referenced_object_id) 
) 

select * 
from fKC 
order by fKC.parent_object_name, fKC.referenced_object_name;