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