Sqlite insert query not working with python?

Question:

I have been trying to insert data into the database using the following code in python:

import sqlite3 as db
conn = db.connect('insertlinks.db')
cursor = conn.cursor()
db.autocommit(True)
a="asd"
b="adasd"
cursor.execute("Insert into links (link,id) values (?,?)",(a,b))
conn.close()

The code runs without any errors. But no updation to the database takes place. I tried adding the conn.commit() but it gives an error saying module not found. Please help?

Asked By: Saurabh

||

Answers:

You do have to commit after inserting:

cursor.execute("Insert into links (link,id) values (?,?)",(a,b))
conn.commit()

or use the connection as a context manager:

with conn:
    cursor.execute("Insert into links (link,id) values (?,?)", (a, b))

or set autocommit correctly by setting the isolation_level keyword parameter to the connect() method to None:

conn = db.connect('insertlinks.db', isolation_level=None)

See Controlling Transactions.

Answered By: Martijn Pieters

It can be a bit late but set the autocommit = true save my time! especially if you have a script to run some bulk action as update/insert/delete

Reference: https://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.isolation_level

it is the way I usually have in my scripts:

def get_connection():
    conn = sqlite3.connect('../db.sqlite3', isolation_level=None)
    cursor = conn.cursor()
    return conn, cursor

def get_jobs():
    conn, cursor = get_connection()

    if conn is None:
        raise DatabaseError("Could not get connection")

I hope it helps you!

Answered By: Eduardo Cerqueira
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.