Python으로 작성한 SQL문에서 대량의 insert를 수행시 느려지는 문제가 있어서,
DB전문가에게 문의를 하니, 간단히 답을 알려 주셨다.
해결책은 "BEGIN TRANSACTION"을 사용하면 되는 것이었다.
이 한줄을 넣고 나니, 10배 이상 속도가 빨라졌다;;
[기존코드]
def insert(self, data):
insert_memo_sql = '''INSERT INTO minim(title, memo) VALUES(?, ?);'''
try:
cur = self.db_conn.cursor()
cur.execute(insert_memo_sql, (data[0], data[1]))
self.db_conn.commit()
print(cur.lastrowid)
return cur.lastrowid
except sqlite3.Error as e:
print(e)
return -1
[개선코드]
def insert_bigdata(self, big_data):
insert_memo_sql = '''INSERT INTO minim(title, memo) VALUES(?, ?);'''
try:
cur = self.db_conn.cursor()
cur.execute("BEGIN TRANSACTION")
for data in big_data:
cur.execute(insert_memo_sql, (data[0], data[1]))
self.db_conn.commit()
print(cur.lastrowid)
return cur.lastrowid
except sqlite3.Error as e:
print(e)
self.db_conn.rollback() # rollback the transaction if there's any error
return -1
'Coding > Python 삽질기' 카테고리의 다른 글
[Python] Jupyter notebook 팁 (0) | 2024.05.11 |
---|---|
Cardioid 그리기 (0) | 2024.02.17 |
[Python] PNG to ICO 변환 하기 (0) | 2024.01.04 |