[Python]Sqlite3에서 insert 후에 cur.lastrowid 출력

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

    [Python]Sqlite3에서 insert 후에 cur.lastrowid 출력 목차
반응형

power-of-optimism.tistory.com/90

위 블로그에서 다수의 초기 데이터를 입력한 후 

print(cur.lastrowid) 에서 None 값이 출력되어 많이 고민을 하였다

결론은 executemany에서는 None을 출력한다.

 

이것을 고민한 이유는 정말로 insert가 성공하였는지 판단하기 위해서다

 

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

    conn = sqlite3.connect(database)

    with conn:    

        cur = conn.cursor()

        cur.execute(sql, task)

        conn.commit()

        print(cur.lastrowid)

위와 같이 하나에 대한 데이터를 insert 명령을 사용하면 

정상적으로 마지막으로 입력된 row의 번호가 출력된다.

단, insert명령을 수행한 후에 하여야 한다.

 

아래처럼 with 문 밖에 사용하면 None 이 출력된다

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

    conn = sqlite3.connect(database)

    with conn:    

        cur = conn.cursor()

        cur.execute(sql, task)

        conn.commit()

 

    print(cur.lastrowid)

 

즐거운 시간되세요^^

 

 

 

 

반응형