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