简体   繁体   中英

django-admin dbshell CommandError: You appear not to have the 'sqlite3' program installed or on your path

I use two sqlite databases in my django project . One for default and another for customer_data.

This is my settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},

'customers': {
    'NAME': 'customer_data',
    'ENGINE': 'django.db.backends.sqlite3',
    'USER': 'db2',
    'PASSWORD': 'db2password'
}

}

DATABASE_ROUTERS = ['theapp.routers.CustomerRouter',]

This is my routers.py

class CustomerRouter: """ A router to control all database operations on models in the auth application. """ def db_for_read(self, model, **hints): """ Attempts to read auth models go to auth_db. """ if model._meta.app_label == 'customer': return 'customer_data' return None

def db_for_write(self, model, **hints):
    """
    Attempts to write auth models go to auth_db.
    """
    if model._meta.app_label == 'customer':
        return 'customer_data'
    return None

def allow_relation(self, obj1, obj2, **hints):
    """
    Allow relations if a model in the auth app is involved.
    """
    if obj1._meta.app_label == 'customer' or \
       obj2._meta.app_label == 'customer':
       return True
    return None

def allow_migrate(self, db, app_label, model_name=None, **hints):
    """
    Make sure the auth app only appears in the 'auth_db'
    database.
    """
    if app_label == 'customer':
        return db == 'customer_data'
    return None

如错误消息所示, You appear not to have the 'sqlite3' program installed ,则需要安装sqlite3 cli才能使用dbshell命令。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM