我想通过python manage.py dbshell发出SQL命令,但是我收到了错误" CommandError:你似乎没有' sqlite3'程序安装或在您的路径上#34;。从python提示符我可以导入psycopg2而不会出现任何错误,psycopg2似乎在我的python路径中。
我正在尝试使用django和我的settings.py指定" ENGINE":" django.db.backends.postgresql_psycopg2"
非常感谢任何帮助,
谢谢,朱利安
答案 0 :(得分:1)
运行./manage.py dbshell psql or sqlite3
时,此命令假定程序位于 PATH 上。这只会调用程序名称。
<强> sqlite3的强>
来自Python本身的包含sqlite3
命令。如果要从命令行访问,则必须安装包含名为simple command-line
的{{1}}实用程序的SQLite库。但是如果没有安装库,您可以创建数据库服务器,因为它不需要运行单独的服务器,而sqlite3本身也是基于文本的文件。
如果您正在开发一个简单的项目或者您不打算在生产环境中部署的项目,那么请使用sqlite3
在您的情况下首先使用SQLite
安装sqlite3来访问dbshell。
<强> postgres的强>
与sudo apt-get install sqlite3 libsqlite3-dev
这个sqlite3
需要包进行初始化比较。 postgresql需要postgresql_psycopg2包
答案 1 :(得分:0)
您需要安装sqlite3才能运行dbshell
安装sqlite程序应解决问题:
sudo apt-get install sqlite3
答案 2 :(得分:0)
我认为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
命令将无效。