12

I am practicing Django but when I command python manage.py makemigration and python manage.py migrate then I got an error as show in the title. the full error is mentioned below:

C:\Users\Manan\python projects\djangoandmongo\new_Socrai>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\core\management\__init__.py", line 401, in
 execute_from_command_line
    utility.execute()
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\core\management\__init__.py", line 395, in
 execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\core\management\base.py", line 341, in run
_from_argv
    connections.close_all()
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\db\utils.py", line 230, in close_all
    connection.close()
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\db\backends\sqlite3\base.py", line 261, in
 close
    if not self.is_in_memory_db():
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\db\backends\sqlite3\base.py", line 380, in
 is_in_memory_db
    return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  File "C:\Users\Manan\python projects\djangoandmongo\dandm_env\lib\site-packages\django\db\backends\sqlite3\creation.py", line 12,
 in is_in_memory_db
    return database_name == ':memory:' or 'mode=memory' in database_name
TypeError: argument of type 'WindowsPath' is not iterable
2
  • 1
    Can you share your models.py file please? Commented Sep 24, 2020 at 12:53
  • 1
    Does this answer your question? Getting a typeError error in django project Commented Jun 27, 2021 at 9:50

4 Answers 4

30

It seems like the setting DATABASES - NAME expects a string, not a Path object.

In your settings try changing this line

'NAME': BASE_DIR / 'db.sqlite3',

to

'NAME': str(BASE_DIR / 'db.sqlite3'),

so that NAME is a string instead of a Path.


The error comes from this line of code django/db/backends/sqlite3/creation.py#L13 and it seems that this commit solves the issue, so in Django v3.1.1 there is no need to use 'NAME': str(BASE_DIR / 'db.sqlite3'), anymore, just using 'NAME': BASE_DIR / 'db.sqlite3', should sufice.

Sign up to request clarification or add additional context in comments.

Comments

3

I fixed this error by changing the line for database name in file settings.py to:

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

1 Comment

the os.path.join(...) operator does fix the issue. An alternative with nice syntax is to keep using pathlib.Path and wrap it str( ... ) whenever a string is required.
0

I had a similar issue which I resolved by changing the owner of the files to the current owner and starting the server using the following command sudo -u <user_name> python3 manage.py runserver. It seems it's a permission issue.

Comments

0

I had the same issue and resolved it by creating a virtual environment for the project. Run the following command to install the environment: python -m venv learn more from https://docs.python.org/3/tutorial/venv.htmlnv.html

1 Comment

Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.