Fish
Fish

Reputation: 145

sqlite3.OperationalError: database is locked

I'm trying to insert all values of a list to my sqlite3 database. When I simulate this query by using the python interactive interpreter, I am able to insert the single value to DB properly. But my code fails while using an iteration:

...
connection=lite.connect(db_name)
cursor=connection.cursor()
for name in match:
         cursor.execute("""INSERT INTO video_dizi(name) VALUES (?)""",(name,))
connection.commit()
...

error:cursor.execute("""INSERT INTO video_dizi(name) VALUES (?)""",(name,))
sqlite3.OperationalError: database is locked

Any way to overcome this problem?

Upvotes: 14

Views: 33775

Answers (3)

Fronto
Fronto

Reputation: 384

As this error can happen because you have opened your site.db or database file in DBbrowser type application to view in interactive database interface. Just close that it will work fine.

Upvotes: 1

user2665694
user2665694

Reputation:

Because your database is use by another process or connection. If you need real concurrency, use a real RDBMS.

Upvotes: -1

hasseg
hasseg

Reputation: 6807

Do you have another connection elsewhere in your code that you use to begin a transaction that is still active (not committed) when you try to commit the operation that fails?

Upvotes: 14

Related Questions