[python manage.py dbshel l尽管已安装且在路径中,但找不到psycopg2

问题描述 投票:0回答:4

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

我正在尝试django,而我的settings.py指定了“ ENGINE”:“ django.db.backends.postgresql_psycopg2”

任何帮助将不胜感激,

谢谢朱利安

python django postgresql psycopg2 mezzanine
4个回答
1
投票

当您运行./manage.py dbshell psql or sqlite3时,此命令假定程序位于PATH上。这将仅调用程序名称。

sqlite3

来自Python本身不包含sqlite3命令。如果要从命令行访问,则必须安装SQLite库,该库包括一个名为simple command-linesqlite3实用程序。但无需安装库就可以创建数据库服务器,因为它不需要运行单独的服务器,而sqlite3本身是基于文本的文件。

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

在您的情况下,首先使用sudo apt-get install sqlite3 libsqlite3-dev安装sqlite3以访问dbshel​​l。

postgres

sqlite3比较,此postgres需要封装才能初始化。 PostgreSQL需要postgresql_psycopg2


0
投票

您需要安装sqlite3才能运行dbshel​​l

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

sudo apt-get install sqlite3

0
投票

我认为dbshel​​l的功能有些混乱。从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命令将不起作用。


0
投票

在ubuntu中安装后尝试

sudo apt-get install postgresql postgresql-contrib
© www.soinside.com 2019 - 2024. All rights reserved.