Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

330
Views
Django dumpdata fails on special characters

I'm trying to dump my entire DB to a json. When I run python manage.py dumpdata > data.json I get an error:

(env) PS C:\dev\watch_something> python manage.py dumpdata > data.json
CommandError: Unable to serialize database: 'charmap' codec can't encode character '\u0130' in position 1: character maps to <undefined>
Exception ignored in: <generator object cursor_iter at 0x0460C140>
Traceback (most recent call last):
  File "C:\dev\watch_something\env\lib\site-packages\django\db\models\sql\compiler.py", line 1602, in cursor_iter
    cursor.close()
sqlite3.ProgrammingError: Cannot operate on a closed database.

It's because one of the characters in my DB is a sepcial character. How can I dump the DB correctly?

FYI, all other DB functionalities work fine

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

To save json data in django the TextIOWrapper is used:

The default encoding is now locale.getpreferredencoding(False) (...)

In documentation of locale.getpreferredencoding fuction we can read:

Return the encoding used for text data, according to user preferences. User preferences are expressed differently on different systems, and might not be available programmatically on some systems, so this function only returns a guess.

Here I found "hacky" but working method to overwrite these settings:

In file settings.py of your django project add these lines:

import _locale
_locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])
over 4 years ago · Santiago Trujillo Report

0

Here is the solution from djangoproject.com
You go to Settings there's a "Use Unicode UTF-8 for worldwide language support", box in "Language" - "Administrative Language Settings" - "Change system locale" - "Region Settings". If we apply that, and reboot, then we get a sensible, modern, default encoding from Python. djangoproject.com

the settings box looks like this. Enable the check and restart your system Windows settings

over 4 years ago · Santiago Trujillo Report

0

One solution is to use ./manage.py dumpdata -o data.json instead of ./manage.py dumpdata > data.json.

Another solution is to use Python's UTF-8 mode, run:

python -Xutf8 ./manage.py dumpdata > data.json
over 4 years ago · Santiago Trujillo Report

0

If you have multiple Python environments, before applying workarounds, it's worth checking that you issue python manage.py against the correct environment. That was my case where I met the same error: the database was created under containerized environment on Linux, with a higher Python version, but Django and other packages were present also in the legacy local environment on Windows. As well, the project directory was attached to the container as a volume, and the content was identical locally and in the container. So, I just mix up and ran manage.py locally instead of being attached to the container.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!