0

I'm trying to add an script to my project to check the connection to the DB, but every time that I try to use 'connection.cursor()' or 'connection.ensure_connection()' gives me an error. Any idea what could it be.

from django.db import connection

def snapshot():
    try:
        connection.ensure_connection()

    except:
        print('not connected')
    else: 
        print('connected')

snapshot()

Traceback (most recent call last):
  File "Portal/savedb.py", line 82, in <module>
    snapshot()
  File "Portal/savedb.py", line 31, in snapshot
    cursor = connection.cursor()
  File "/usr/local/lib/python3.7/site-packages/django/db/__init__.py", line 28, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/usr/local/lib/python3.7/site-packages/django/db/utils.py", line 198, in __getitem__
    self.ensure_defaults(alias)
  File "/usr/local/lib/python3.7/site-packages/django/db/utils.py", line 166, in ensure_defaults
    conn = self.databases[alias]
  File "/usr/local/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/lib/python3.7/site-packages/django/db/utils.py", line 147, in databases
    self._databases = settings.DATABASES
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 79, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 66, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 157, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'Portal'
  • How are you running this script? Any command that you run using django.db should run **after** Django has been setup, i.e. has loaded all modules and settings. – dirkgroten Oct 31 '19 at 14:41
  • I'm calling the script from an entrypoint.sh when start the docker container – Masashimaru Oct 31 '19 at 14:44
  • Create a [custom management command](https://docs.djangoproject.com/en/2.2/howto/custom-management-commands/) and call that in your script. What you're doing can't work, this script cannot work without first loading your entire django app. – dirkgroten Oct 31 '19 at 14:45
  • oh man, you are right!!!!!!! I just got it working. I was running the script before call the runserver. I feel so dumb. Thanks Bro!!!!!!!!!! – Masashimaru Oct 31 '19 at 14:51

0 Answers0