python manage.py dbshel​​l找不到psycopg2虽然它已经安装并且在路径中

时间:2014-09-25 11:15:01

标签: python django postgresql psycopg2 mezzanine

我想通过python manage.py dbshel​​l发出SQL命令,但是我收到了错误" CommandError:你似乎没有' sqlite3'程序安装或在您的路径上#34;。从python提示符我可以导入psycopg2而不会出现任何错误,psycopg2似乎在我的python路径中。

我正在尝试使用django和我的settings.py指定" ENGINE":" django.db.backends.postgresql_psycopg2"

非常感谢任何帮助,

谢谢,朱利安

3 个答案:

答案 0 :(得分:1)

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

<强> sqlite3的

来自Python本身的

包含sqlite3命令。如果要从命令行访问,则必须安装包含名为simple command-line的{​​{1}}实用程序的SQLite库。但是如果没有安装库,您可以创建数据库服务器,因为它不需要运行单独的服务器,而sqlite3本身也是基于文本的文件。

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

在您的情况下首先使用SQLite安装sqlite3来访问dbshel​​l。

<强> postgres的

sudo apt-get install sqlite3 libsqlite3-dev这个sqlite3需要包进行初始化比较。 postgresql需要postgresql_psycopg2

答案 1 :(得分:0)

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

安装sqlite程序应解决问题:

sudo apt-get install sqlite3

答案 2 :(得分:0)

我认为dbshel​​l的作用存在一些混乱。来自documentation

  

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

     
      
  • 对于PostgreSQL,它运行psql命令行客户端。
  •   
  • 对于MySQL,   这将运行mysql命令行客户端。
  •   
  • 对于SQLite,这会运行   sqlite3命令行客户端。
  •   
     

此命令假定程序在PATH上,这样就很简单了   调用程序名称(psql,mysql,sqlite3)会找到该程序   在正确的地方。没有办法指定的位置   程序手动。

它不像manage.py shelldbshell只运行配置数据库的普通shell,除了它使用settings.py中的凭据登录。

这意味着,如果您使用的是postgresql,则需要安装psql命令才能使dbshell正常工作。此命令不是Python的一部分,但随postgresql服务器一起提供。

顺便说一句 - 如果您安装的所有内容都是psycopg2,则dbshell命令将无效。