django-admin dbshell CommandError:您似乎没有安装"sqlite3"程序或在路径上 [英] django-admin dbshell CommandError: You appear not to have the 'sqlite3' program installed or on your path
问题描述
我在django项目中使用了两个sqlite数据库.一个默认值,另一个用于customer_data.
I use two sqlite databases in my django project . One for default and another for customer_data.
这是我的设置.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',]
这是我的routers.py
This is my routers.py
CustomerRouter类:"路由器,用于控制模型中所有模型上的所有数据库操作身份验证应用程序."def db_for_read(self,model,** hints):"尝试读取身份验证模型转到auth_db."如果model._meta.app_label =='客户':返回"customer_data"不返回
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
推荐答案
如错误消息您似乎未安装'sqlite3'程序
所示,则需要按顺序安装sqlite3 cli使用 dbshell
命令.
As the error message You appear not to have the 'sqlite3' program installed
suggests, you need to install the sqlite3 cli in order to use the dbshell
command.
这篇关于django-admin dbshell CommandError:您似乎没有安装"sqlite3"程序或在路径上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!