[python]sqlite3에 다수의 데이터를 한번에 입력(multiple insert in sqlite3)

2020년 10월 27일 by 진아사랑해

    [python]sqlite3에 다수의 데이터를 한번에 입력(multiple insert in sqlite3) 목차
반응형

sqlite3의 테이블 생성 초기에 다수의 데이터를 초기 데이터로 입력해야 하는 경우가 발생하였다

 

입력디어야 할 초기 데이터는 아래와 같다

 

initial_db = [('불여우'1), ('곰돌이'2), ('살쾡이'3), ('야옹이'4), ('으르렁'5),

('나비'6), ('한결같은'7), ('으뜸'8), ('아미'9), ('베리베리'10), ('용'11),

('전갈'12), ('딱따구리'13), ('개똥벌레'14), ('모아'15), ('마리'16), ('로제'17),

....

]

 

실행함수로 cur.execute(sql, task)를 사용하니

def insert_db(conntask):

    sql = ''' INSERT INTO thunder(name,score) VALUES(?,?) '''

    cur = conn.cursor()

    cur.execute(sql, task)

    conn.commit()

    return cur.lastrowid

-> Incorrect number of bindings supplied. The current statement uses 2, and there are 252 supplied.

    에러가 발생하였다

 

초기 데이터를 리스트 타입[ ] 또는 튜플 타입( )으로 전체 데이터를 감싸도 동일한 결과가 나왔다

 

실행함수로 cur.executemany(sql, task)를 사용하니

def insert_db(conntask):

    sql = ''' INSERT INTO thunder(name,score) VALUES(?,?) '''

    cur = conn.cursor()

    cur.executemany(sql, task)

    conn.commit()

    return cur.lastrowid

->에러없이 잘 수행되었다

 

정말로 입력되었는지 확인하는 방법은

    print(cur.rowcount)  <- 입력된 row 숫자를 출력한다

 

    cur.execute("select * from thunder")  <- 테이블에 있는 전체를 메로리에 가져온다

    # 데이타 Fetch

    rows = cur.fetchall()   <- 메모리에 가져온 데이터를 rows에 넣는다

    for row in rows:  <- rows네 들어가 있는 값을 출력한다

        print(row)

    return cur.lastrowid

-> 출력되는 형태는 (2278, '베리베리', 10) 처럼 튜플 형태로 출력된다

 

참고: www.sqlitetutorial.net/sqlite-select/

참고: pythonstudy.xyz/python/article/204-SQLite-%EC%82%AC%EC%9A%A9

 

즐거운 시간되세요^^

 

 

 

반응형