Jun 11, 2019 2 min read

Django Error Silver Bullets

Table of Contents

Common Django errors and how to fix them: no such table: main.auth_user__old; ModuleNotFoundError: No module named ‘sqlparse’

I've recently been teaching myself Django. I was working on creating a new web app to handle the backend for some IoT projects I've been working on and recently came across two errors. In case anyone else comes across them, I will post the silver bullets below to hopefully save you some time.

1. no such table: main.auth_user__old

This was an unhandled exception that occurred whenever I tried to POST data from the Django admin:

Request Method: POST
Request URL: http://127.0.0.1:8000/admin/weatherstation/weather_recording/add/
Django Version: 2.1.1
Exception Type: OperationalError
Exception Value: no such table: main.auth_user__old
Exception Location: /home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py in execute, line 296
Python Executable: /home/engineer/anaconda3/envs/djangoEnv/bin/python
Python Version: 3.5.6
Python Path: [‘/home/engineer/Projects/WEATHERSTATION/weathersite’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python35.zip’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/plat-linux’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/lib-dynload’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages’]

Request Method: POST Request URL: http://127.0.0.1:8000/admin/weatherstation/weather_recording/add/ Django Version: 2.1.1 Exception Type: OperationalError Exception Value: no such table: main.auth_user__old Exception Location: /home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py in execute, line 296 Python Executable: /home/engineer/anaconda3/envs/djangoEnv/bin/python Python Version: 3.5.6 Python Path: ['/home/engineer/Projects/WEATHERSTATION/weathersite',  '/home/engineer/anaconda3/envs/djangoEnv/lib/python35.zip',  '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5',  '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/plat-linux',  '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/lib-dynload',  '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages']

Solution: This problem is described in Issue #21982. It has since been fixed. Since I use Anaconda ("conda") as my package manager, the simple fix for me was to just update my Django environment to the latest version.

2.  ModuleNotFoundError: No module named 'sqlparse'

I thought I was home free at this point now that I had updated my Django environment to the latest version in conda, but alas that was not the case. This time, I received the following error:

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/home/engineer/anaconda3/envs/djangoEnvNew/lib/python3.7/site-packages/django/core/management/__init__.py", line 381

...

File "/home/engineer/anaconda3/envs/djangoEnvNew/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 28,
 in <module>
    from .introspection import DatabaseIntrospection            # isort:skip
  File "/home/engineer/anaconda3/envs/djangoEnvNew/lib/python3.7/site-packages/django/db/backends/sqlite3/introspection.py",
 line 4, in <module>
    import sqlparse
ModuleNotFoundError: No module named 'sqlparse'

Thankfully the error stack is pretty helpful here. The most recent call with the error "ModuleNotFoundError: No module named 'sqlparse'" is pretty descriptive. To resolve this error, you simply need to install the module with the following command (while in your virtual environment):

conda install sqlparse

That's it! Hopefully this helps someone else. As always, let me know if you have any questions!

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to The Engineer's Workshop.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.