# DB의 작성

우선 가장 기본적인 SQLite DB의 작성을 해보겠습니다.

```python
# -*- coding: utf-8 -*-
import sqlite3

di = {
    'member' : 
        [
            {'name':'정재우','age':27,'address':'서울시 송파구 오금로61길',
            'job':'대학생','hobby':['운동','뉴스보기','게임'],
            'goal':'보다 나은 세상',
            'like':{
                'food':['삼겹살','치킨','회','장어'],
                'device':['컴퓨터','스마트폰','에어컨'],
                'nation':['대한민국','중국','동남아시아']
            }},
            {'name':'박지숙','age':'44','address':'서울시 용산구 새창로 도원래미안',
            'job':'프리랜서강사','hobby':['리폼','고양이쳐다보기','책읽기','교안만들기'],
            'goal':'딸 대학보내기',
            'like':{
                'food':['잔치국수','삼겹삽','자몽','팥빙수','치킨'],
                'device':['노트북','건조기','블루투스 스피커'],
                'nation':['대한민국','베트남','스위스']
            }},
            {'name':'이정은', 'age':0, 'address':'서울시 광진구 능동 143',
            'job':'편집자', 'hobby':['연기', '노래', '영화', '책', '여행'],
            'goal':'나와 내 이웃이 행복하게 사는 것',
            'like':{
                'food':['치킨','엄마표 고추장찌개', '연어', '체리', '포도'],
                'device':['아이폰', '노트북', '에어팟'],
                'nation':['대한민국', '독일', '캐나다']
            }},
            {'name':'이영은','age':26,'address':'인천',
            'job':'회사원','goal':'찾는중?', 'hobby':['여행','독서','사진'],
            'like':{
                'food':['떡볶이','빵','치킨'],
                'device':['노트북','카메라','핸드폰'],
                'nation':['한국','미국','대만']
            }},
            {'name':'정수철', 'age':0, 'address':'서울시 노원구',
            'job':'회사원', 'hobby':['야구', '수영', '대화'],
            'goal':'스포츠타운',
            'like':{
                'food':['냉면', '참치', '장어', '고기'],
                'device':['자동차','거꾸리','자이글'],
                'nation':['대한민국','뉴질랜드','우즈벡']
            }},
            {'name':'황용훈', 'age':38, 'address':'서울시',
            'job':'디자이너','hobby':['골프','독서','미술'],
            'goal':'자유',
            'like':{
                'food':['한식','중식','일식','양식','분식'],
                'device':['맥','피씨','모바일'],
                'nation':['한국','중국','미국']
            }},
            {'name':'류혜림', 'age':30, 'address':'경기도 파주시 번영로55', 
            'hobby':['netflix','영화보기','산책'],
            'goal':'하고 싶은거 하기',
            'like':{
                'food':['회','초밥','해산물','제철음식','갈비','삼겹살','냉면'],
                'program':['포토샵','일러스트','인디자인'],
                'nation':['한국','캐나다','코스타리카','터키','멕시코']
            }},
            {'name': '조영민', 'age':37, 'address':'서울 노원구 노원로 186-15', 
            'job':'faculty', 'hobby':['요리', '기타'], 'goal':'농부', 
            'like': {
                'food':['국수', '통닭', '초밥', '피자'],
                'device':['Toyota Car', 'Mobile Phone'],
                'nation': ['미국','독일','일본','프랑스']
            }},
            {'name':'이재권','age':26,'address':'경기도 의정부시 흥선로 98-1',
            'job':'예비창업자','hobby':['영화감상','젬베','음악감상','오토바이'],
            'goal':'신속배달만 고려하는 이륜차 시장을 넘어 안전을 고려하는 이륜차 시장을 만드는 것',
            'like':{
                'food':['닭','인도커리','양고기','소고기','회','배','포도','꿔바로우'],
                'device':['오토바이','스마트폰','카메라'],
                'nation':['대한민국','미국','북한','일본','중국','몽골','러시아']
            }},
            {'name':'홍성준', 'age':27, 'address':'경기도 광명시 하안동 하안주공 1008동',
            'job':'대학생', 'hobby':['사진촬영','비디오게임'],
            'goal':'데이터 분석 및 시각화',
            'like':{
                'food':['김치찌개', '삼겹살', '꽃등심'],
                'device':['컴퓨터','플레이스테이션','카메라'],
                'nation':['대한민국','일본','미국']
            }},
            {'name': '김대성', 'age':28, 'address':'서울시 관악로 12길 ',
            'join':'엔지니어', 'hobby': ['야구', '재즈공연', '게임'],
            'goal':'무료 기술 학교',
            'like':{
                'food':['참치찌게', '된장찌개', '치킨', '라면', '삼겹살'],
                'device': ['컴퓨터', '에어프라이', '오토바이'],
                'nation':['대한민국', '네덜란드','영국'] 
            }},
            {'name':'이진주', 'age':0, 'address':'경기도 평택시', 
            'job':0, 'hobby': ['자전거 타기', '여행', '러닝', '풍선아트'], 'goal':'노마드 개발자', 
            'like':{
                'food':['김치찌개', '삼겹살', '마라탕', '호떡'],
                'device':['노트북', '인덕션', '와인따개'],
                'nation':['대한민국','덴마크','필리핀','중국']
            }},
            {'name':'황희진', 'age':'25', 'address':'인천광역시 계양구', 'job':'직장인', 
            'hobby':['고양이랑놀기', '웹서핑', '맛집탐방'],
            'goal':'코딩하는마케터',
            'like':{
                'food':['카레','만두','빵'],
                'device':['에어프라이어','이북리더기','미니빔프로젝터'],
                'nation':['중국','베트남','스웨덴']
            }},
            {'name': '정재윤', 'age':0, 'address':'서울시 마포구',
            'job':'프리랜서','hobby':['축구','파이썬','코딩'],
            'goal' : '투자가',
            'like':{
                'food':['떡볶이','삼겹살','스테이크','쌀국수'],
                'device':['자전거', '킥보드', '드론'],
                'nation':['대한민국','중국','싱가폴']
            }},
            {'name':'김마야','age':29,'address':'서울시 마포구 서교동', 
            'job':'사업기획자', 'hobby': ['복싱','수제맥주품평','중드/영드감상'],
            'goal':'디지털 노마드',
            'like':{
                'food':['곱창구이','막창구이','곱창전골','훠궈','양꼬치','떡볶이'],
                'device':['mac book','iphone','미니빔'],
                'nation':['대한민국','네덜란드','중국','호주']
            }},
            {'name':'김현석', 'age':00, 'address':'경기도 광명시','job': '자영업', 
            'hobby':'자전거', 'goal': '건물주',
            'like': {
                'food' : ['삼겹살', '김치찌개','곱창'],
                'device' : ['자전거', '커피머신', '스마트폰'],
                'nation' : ['몰디브', '대한민국', '스위스']
            }},
            {'name':'박미지','age': 30, 'address':'서울시 관악구 신림동',
            'job':'없음', 'hobby':['게임', '독서', '영화감상'], 'goal' : '취업', 
            'like': { 
                'food':['회', '치킨', '국수','삼겹살'], 
                'device':['iphone','컴퓨터','ps4pro'],
                'nation':['대한민국','캐나다','영국']
            }},
            {'name':'정명석','age':26,'address':'서울 용산구',
            'job':'student','hobby':['영화보기','중국어 공부'],'goal':'창업',
            'like':{
                'food':['삼겹살','스시'],
                'device':['컴퓨터','폰'],
                'nation':['대한민국','중국']}}
        ],
    'advisor' : [
         {'name':'김민철', 'age':38, 'address':'서울시 구로구 구로동 1129번지',
        'job':'개발자', 'hobby':['기타', '피아노', '게임'], 
        'goal':'무료 기술 학교',
        'like': {
            'food':['참치찌게', '된장찌게', '치킨', '라면', '삼겹살'],
            'device':['컴퓨터', '에어프라이', '오토바이'],
            'nation':['대한민국','네델란드','영국']
        }},
        {'name':'최원미', 'age':21, 'address':'서울시 강북구',
        'job':'학생', 'hobby':['요가', '웹툰', '영화'], 
        'goal':'부자 되기',
        'like': {
            'food':['오므라이스', '치킨', '새우', '삼겹살'],
            'device':['imac', '전동휠','스마트폰'],
            'nation':['대한민국','중국','프랑스','스위스','LA']
        }}
    ]  
}

memberDB = "members.db"

def ConnectMemberDB():
    try:
        conn = sqlite3.connect(memberDB)
        cs = conn.cursor()
        sql = """CREATE TABLE IF NOT EXISTS members 
        (id INTEGER primary key autoincrement, name TEXT, age INTEGER, address TEXT, 
        job TEXT
        )"""
        cs.execute(sql)

        conn = sqlite3.connect(memberDB)
        sql = """CREATE TABLE IF NOT EXISTS hobby 
        (member_id INTEGER, hobby TEXT)"""
        cs.execute(sql)
        
        conn = sqlite3.connect(memberDB)
        sql = """CREATE TABLE IF NOT EXISTS like_food 
        (member_id INTEGER, food TEXT)"""
        cs.execute(sql)

        conn = sqlite3.connect(memberDB)
        sql = """CREATE TABLE IF NOT EXISTS like_device 
        (member_id INTEGER, device TEXT)"""
        cs.execute(sql)

        conn = sqlite3.connect(memberDB)
        sql = """CREATE TABLE IF NOT EXISTS like_nation 
        (member_id INTEGER, nation TEXT)"""
        cs.execute(sql)
        #conn.commit()
        return conn

        return conn
    except Exception as err:
        print("Exception in lottoDBconnect", err)
        return -1


def InsertMemberDB(conn, indv):
    try:
        sql = "INSERT INTO members (name, age, address, job) VALUES(?,?,?,?)"
        conn.execute(sql, (indv.get('name'), indv.get('age'), indv.get('address'), indv.get('job')))
        conn.commit()

        sql = "SELECT id from members WHERE name =\'" +indv.get('name')+"\' AND age = " +str(indv.get('age')) + " AND address = \'"+ indv.get('address')+"\' AND job = \'"+ indv.get('job')+"\'"
        cs = conn.cursor()
        cs.execute(sql)
        getret = cs.fetchall()
        
        sql = "INSERT INTO hobby (member_id, hobby) VALUES(?, ?) "
        for hobbyvalue in indv.get('hobby'):
            conn.execute(sql, (getret[0][0], hobbyvalue))
            conn.commit()

        sql = "INSERT INTO like_food (member_id, food) VALUES(?, ?)"
        for foodvalue in indv.get('like').get('food'):
            conn.execute(sql, (getret[0][0], foodvalue))
            conn.commit()

        sql = "INSERT INTO like_device (member_id, device) VALUES(?, ?)"
        for devicevalue in indv.get('like').get('device'):
            conn.execute(sql, (getret[0][0], devicevalue))
            conn.commit()
        
        sql = "INSERT INTO like_nation (member_id, nation) VALUES(?, ?)"
        for nationvalue in indv.get('like').get('nation'):
            conn.execute(sql, (getret[0][0], nationvalue))
            conn.commit()
        
    except Exception as err:
        print("Exception rise in InsertMemberDB", err)

con = ConnectMemberDB()
for indv in di.get('member'):
    InsertMemberDB(con, indv)

```

예제는 기존에 여러번 작업해 보았던  Dictionary를 SQLite Database화하는 작업입니다.&#x20;

{% file src="<https://2648822586-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKJtFns8UmWWxSgNJgC%2F-LRV4Z63F0itqbFUg_f1%2F-LRV4nRbMUGTeL5UhxX9%2Fsqlite1.py?alt=media&token=b6481678-a3d6-448d-b68a-0b2c88dd408b>" %}

{% file src="<https://2648822586-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKJtFns8UmWWxSgNJgC%2F-LRV4Z63F0itqbFUg_f1%2F-LRV4pQyuu2x_JVPySoG%2Fsqlite2.py?alt=media&token=a6306e84-9661-4712-815f-d4ee4f14fce8>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://study-code.gitbook.io/python-basic/sqllite/db.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
