Saurabh
Saurabh

Reputation: 495

Sqlite insert query not working with python?

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?

Upvotes: 38

Views: 42101

Answers (2)

Martijn Pieters
Martijn Pieters

Reputation: 1121914

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.

Upvotes: 88

Eduardo Cerqueira
Eduardo Cerqueira

Reputation: 856

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!

Upvotes: 4

Related Questions