我想通过python manage.py dbshell发出SQL命令,但出现错误“ CommandError:您似乎没有在路径上安装'sqlite3'程序”。从python提示符下,我可以导入psycopg2而不会出现任何错误,并且psycopg2似乎在我的python路径中。
我正在尝试django,而我的settings.py指定了“ ENGINE”:“ django.db.backends.postgresql_psycopg2”
任何帮助将不胜感激,
谢谢朱利安
当您运行./manage.py dbshell psql or sqlite3
时,此命令假定程序位于PATH上。这将仅调用程序名称。
sqlite3
来自Python本身不包含sqlite3
命令。如果要从命令行访问,则必须安装SQLite库,该库包括一个名为simple command-line
的sqlite3
实用程序。但无需安装库就可以创建数据库服务器,因为它不需要运行单独的服务器,而sqlite3本身是基于文本的文件。
如果您正在开发一个简单的项目或不打算在生产环境中部署的项目,请使用SQLite
在您的情况下,首先使用sudo apt-get install sqlite3 libsqlite3-dev
安装sqlite3以访问dbshell。
postgres
与sqlite3
比较,此postgres
需要封装才能初始化。 PostgreSQL需要postgresql_psycopg2包
您需要安装sqlite3才能运行dbshell
安装sqlite程序应该可以解决问题:
sudo apt-get install sqlite3
我认为dbshell的功能有些混乱。从documentation:
为您指定的数据库引擎运行命令行客户端引擎设置,使用您的USER中指定的连接参数,密码等设置。
- 对于PostgreSQL,它运行
psql
命令行客户端。- 对于MySQL,这将运行
mysql
命令行客户端。- 对于SQLite,这将
sqlite3
命令行客户端。此命令假定程序位于您的PATH上,因此调用程序名称(psql,mysql,sqlite3)将找到程序在正确的地方。无法指定广告的位置手动编程。
与manage.py shell
不同,dbshell
只是为配置的数据库运行普通的shell,除了它使用settings.py
中的凭据登录。
这意味着,如果您使用的是Postgresql,则需要安装psql
命令才能使dbshell
工作。该命令不是Python的一部分,但与postgresql服务器一起提供。
按顺序-如果您已安装的全部是psycopg2,则dbshell
命令将不起作用。
在ubuntu中安装后尝试
sudo apt-get install postgresql postgresql-contrib