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.
- I killed the server by pressing Ctrl+C
- I deleted the pychache folder. Youll find this folder in your project folder.
- I deleted the sqlite db.
- 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. - I migrated in the normal way.
- 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.