python manage.py dbshell不';尽管psycopg2已安装并位于路径中,但找不到它

python manage.py dbshell不';尽管psycopg2已安装并位于路径中,但找不到它,python,django,postgresql,psycopg2,mezzanine,Python,Django,Postgresql,Psycopg2,Mezzanine,我想通过python manage.py dbshell发出SQL命令,但我得到了错误“CommandError:您似乎没有安装'sqlite3'程序或在您的路径上”。在python提示符下,我可以导入psycopg2而不会出现任何错误,并且psycopg2似乎位于我的python路径中 我正在尝试django,我的settings.py指定了“引擎”:“django.db.backends.postgresql\u psycopg2” 任何帮助都将不胜感激 谢谢,Julian您需要安装sqli

我想通过python manage.py dbshell发出SQL命令,但我得到了错误“CommandError:您似乎没有安装'sqlite3'程序或在您的路径上”。在python提示符下,我可以导入psycopg2而不会出现任何错误,并且psycopg2似乎位于我的python路径中

我正在尝试django,我的settings.py指定了“引擎”:“django.db.backends.postgresql\u psycopg2”

任何帮助都将不胜感激


谢谢,Julian

您需要安装sqlite3才能运行dbshell

安装sqlite程序可以解决以下问题:

sudo apt-get install sqlite3

运行
/manage.py dbshell psql或sqlite3
时,此命令假定程序在您的路径上。这将只调用程序名

sqlite3

Python本身不包含
sqlite3
命令。如果要从命令行访问,必须安装包含名为
sqlite3
simple命令行
实用程序的SQLite库。但在不安装库的情况下,您可以创建db服务器,因为它不需要运行单独的服务器,sqlite3本身也不需要基于文本的文件

如果您正在开发一个简单的项目或不打算在生产环境中部署的东西,那么请使用
SQLite

在您的情况下,首先使用
sudo apt get install sqlite3 libsqlite3 dev
安装sqlite3以访问dbshell

博士后


sqlite3
相比,此
postgres
需要初始化包。postgresql需要软件包

我认为dbshell的功能有些混乱。从:

为在中指定的数据库引擎运行命令行客户端 引擎设置,使用用户中指定的连接参数, 密码等,设置

  • 对于PostgreSQL,它运行
    psql
    命令行客户端
  • 对于MySQL, 这将运行
    mysql
    命令行客户端
  • 对于SQLite,它运行
    sqlite3
    命令行客户端
此命令假定程序位于您的路径上,以便 调用程序名(psql、mysql、sqlite3)将找到该程序 在正确的地方。没有办法指定文件的位置 手动编程

它不像
manage.py shell
dbshell
只是为配置的数据库运行普通shell,只是它使用
settings.py
中的凭据让您登录

这意味着,如果您使用的是postgresql,则需要安装
psql
命令才能使
dbshell
正常工作。此命令不是Python的一部分,而是postgresql server附带的


换句话说,如果您只安装了psycopg2,那么
dbshell
命令将不起作用。

Hi-postgres是我最终将要使用的数据库,因此我希望继续使用它,而不是sqlite3。在任何目录下运行psql都可以正常工作,所以我想这就是我的路径。正如我提到的,我认为psycopg2也安装得很好,因为我可以在python提示符下运行“import psycopg2”,而不会出现错误。运行./manage.py dbshell psql会给出一个错误列表,其结果是:
output=self.handle(*args,**选项)TypeError:handle()正好接受1个参数(给定7个)
感谢您的支持help@JulianJordan在运行
dbshell psql
时,您从未在问题中提到过错误`Hi-直到您的帮助性回答,我才知道我可以在
/manage.py dbshell
的末尾指定psql,因此它本身就很有帮助,因为在此之前,我一直收到一个与sqlite3相关的错误(可能是默认选项?)哦,…所以现在
dbshell psql
给出了这个错误
output=self.handle(*args,**选项)TypeError:handle()正好取1个参数(给定7个)
我说得对吗?很抱歉,这也不行。我目前的主要目标是完成django教程,所以我用sqlite3做了一个新的设置,它“很管用”。最终我将不得不使用postgres,但我认为现在我将使用更简单的db设置。谢谢你的建议:o)嗨-我确实安装了psql命令,运行它会给我一个postgres提示:username=#请用你的
settings.py
文件更新这个问题。@BurhanKhalid问题本身很不清楚。。虽然现在我们有了
TypeError
我在settings.py中隐藏了用户名/密码,并将其发布在这里:(直接发布在这里太长了,有更好的方法吗?)