database – Python sqlite3.OperationalError: no such table:

database – Python sqlite3.OperationalError: no such table:

You are assuming that the current working directory is the same as the directory your script lives in. It is not an assumption you can make. Your script is opening a new database in a different directory, one that is empty.

Use an absolute path for your database file. You can base it on the absolute path of your script:

import os.path

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(BASE_DIR, PupilPremiumTable.db)
with sqlite3.connect(db_path) as db:

You can verify what the current working directory is with os.getcwd() if you want to figure out where instead you are opening the new database file; you probably want to clean up the extra file you created there.

I had the same problem and heres how I solved it.

  1. I killed the server by pressing Ctrl+C
  2. I deleted the pychache folder. Youll find this folder in your project folder.
  3. I deleted the sqlite db.
  4. I made migrations with python manage.py makemigrations <app_name> where <app_name> is the specific app that contains the model thats causing the error. In my case it was the mail app so I ran python manage.py makemigrations app.
  5. I migrated in the normal way.
  6. Then I started the server and it was all solved.

I believe the issue is as Jorge Cardenas said:

Maybe you are loading views or queries to database but you haven´t
granted enough time for Django to migrate the models to DB. Thats why
the table doesnt exist.

This solution is based on this youtube video

database – Python sqlite3.OperationalError: no such table:

I have to face same issue and there are a couple of approaches, but the one I think is the most probable one.

Maybe you are loading views or queries to database but you haven´t granted enough time for Django to migrate the models to DB. Thats why the table doesnt exist.

Make sure you use this sort of initialization in you views code:

form RegisterForm(forms.Form):

    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)

A second approach is you clean previous migrations, delete the database and start over the migration process.

Leave a Reply

Your email address will not be published. Required fields are marked *