- [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(conn, task):
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(conn, task):
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
즐거운 시간되세요^^
'python & 라즈베리파이' 카테고리의 다른 글
[Python]Sqlite3에서 insert 후에 cur.lastrowid 출력 (0) | 2020.10.29 |
---|---|
[python]파일 또는 디렉토리의 존재 여부 확인(checking the existence of a file or directory) (0) | 2020.10.28 |
[python]No module named 'thunder_db.py'; 'thunder_db' is not a package (0) | 2020.10.27 |
[Python]SQLIte3 연결 및 테이블 생성(SQL connection & create table) (0) | 2020.10.27 |
[Tkinter]canvas에서 이미지 변경하기(How to update an image on a Canvas?) (0) | 2020.10.26 |