11

I have created a Django project with the new JSONField announced in Django 3.1, which supports all databases.

I have successfully used this field on a linux machine, but running python manage.py migrate with the same project on Windows fails with the following message:

(fields.E180) SQLite does not support JSONFields.

The same versions of Python and Django are used in both PCs.

Alasdair
  • 298,606
  • 55
  • 578
  • 516
Udi
  • 29,222
  • 9
  • 96
  • 129

1 Answers1

23

For using JSONField with Django 3.1+ and sqlite, the JSON1 sqlite extension must be installed.

To enable JSON1 on sqlite follow the instructions on Django's wiki: https://code.djangoproject.com/wiki/JSON1Extension.

Instructions for Windows:

  • Check your python installation - is it 32bit or 64bit? run: python -c "import platform;print(platform.architecture()[0])"
  • Download the precompiled DLL that matches your Python installation (32-bit or 64-bit).
  • Locate your Python installation. By default, it should be in %localappdata%\Programs\Python\PythonXX, where XX is the Python version. For example, it's located in C:\Users\<username>\AppData\Local\Programs\Python\Python37. If you added Python installation directory to your PATH environment variable, you can run the command where python on a command prompt to locate it. Enter the DLLs directory in your Python installation.
  • Rename (or delete) sqlite3.dll inside the DLLs directory.
  • Extract sqlite3.dll from the downloaded DLL archive and put it in the DLLs directory.
  • Now, the JSON1 extension should be ready to be used in Python and Django.
Udi
  • 29,222
  • 9
  • 96
  • 129