Richa Panthi
Richa Panthi

Reputation: 11

How to access and update an already existing tables of sqlite database file in another python file

I wrote the following code to create a database file and then created a table in that database and inserted values using sql queries in python. let say this is a file named info.py

conn = sqlite3.connect('sqlite_file.db', timeout=20)
c = conn.cursor()

#Creating a new SQLite table with 1 column
c.execute('CREATE TABLE STUDENTS_ (Name CHAR, RollNo INTEGER)')

a=['Richa', 'Swapnil', 'Jahanavi', 'Shivam', 'Mehul']
b=[122, 143, 102, 186, 110]
p=0

for r in b:
    c.execute("INSERT INTO STUDENTS_ VALUES (?,?);", (a[p],b[p]))     
    p=p+1

It runs well and gives the expected result. Now I want to update the same table named STUDENTS_, through another code in a different python file,I tried the code below. This is another file named info_add.py

    import sqlite3

    sqlite_file = 'my_first_db.sqlite'    # name of the sqlite database file
    STUD = 'STUDENTS_'  # name of the table to be created

    conn = sqlite3.connect('sqlite_file.db', timeout=20)
    c = conn.cursor()
    a=['Riya', 'Vipul']
    b=[160, 173]
    p=0
    for r in b:
        c.execute("INSERT INTO STUDENTS_ VALUES (?,?);", (a[p],b[p]))     
        p=p+1

I Get the following error:

OperationalError: database is locked

What is this error?I know i am doing wrong, please anyone help me with a right method!!Thankyou

Upvotes: 1

Views: 2644

Answers (1)

CL.
CL.

Reputation: 180070

The "database is locked" message indicates that some other connection still has an active transaction.

Python tries to be clever and automatically starts transactions for you, so you have to ensure that you end your transactions (conn.commit()) when needed.

Upvotes: 1

Related Questions