sqlite 여러개 다른파일 DB 조합해서 새로운 DB만들기

목록으로



ATTACH : 하나의 연결에 다른 파일 데이터베이스 붙여서 동시에 사용 .

 

DB 파일이 여러개인 경우 서로 다른 DB에 있는 테이블들을 이용해서 조회를 하고자 할때

import sqlite3
con = sqlite3.connect( dbName )
cur = con.cursor()
sql = 'ATTACH DATABASE "database1.db" AS db1;'
​cur.execute(sql)
sql = 'ATTACH DATABASE "database2.db" AS db2;'
​cur.execute(sql)

sql = "SELECT * FROM db1.SomeTable a INNER JOIN db2.SomeTable b ON b.SomeColumn = a.SomeColumn;"
​cur.execute(sql)
for row in cur:
    print( row )
cur.close() ; con.close()

 

 

위와 같이 다른파일의 db 를 붙이면 다음과 여러개의 db에 있는 테이블을 이용해서 조회 할수 있다.

​주의: 데이타베이스 이름은 따옴표로 둘러싸야 한다.

전국주소관련 파일('전국.db')이 있는 DB 에서 '서울특별시' 만 뽑아서 새로운 DB 만드는데 예문

원본디비: 전국.db 셍성될 DB : '서울특별시.db'

​원본디비는 현재 파일이 있는 폴더 밑에 'DB' 폴더에 있다고 가정

import os,sqlite3

​BASE_DIR = os.path.abspath('.')
TARGET_DIR = os.path.join(BASE_DIR, "DB")
dbName = '서울특별시'
srcDB = os.path.join(TARGET_DIR, '전국.db')
tarDB = os.path.join(TARGET_DIR, dbName + '.db')

con = sqlite3.connect( tarDB )
cur = con.cursor()
sql = 'ATTACH DATABASE "%s" AS src' % srcDB #데이타를 가져올 원본디비 연결
cur.execute(sql)
sql = '''CREATE TABLE doro AS SELECT * FROM src.doro WHERE src.doro.sidoname="%s"'''% dbName
cur.execute(sql)
con.commit()
sql = 'DETACH DATABASE src;' # 연결 종료
cur.execute(sql)
cur.close() ; con.close()

 

 



관리자
25-02-05 10:29
댓글 추가 ..
0 개의 답변이 있습니다.
Sqlite 이론


11 Python 전역(global) 변수 관리자 52 2025-02-05
10 sqlite 여러개 다른파일 DB 조합해서 새로운 DB만들기 관리자 59 2025-02-05
9 sqlite 한개의 DB안에 있는테이블을 조합해서 새로운테이블 생성 관리자 55 2025-02-05