Django从sqlite3切换到Postgresql问题

时间:2012-03-21 13:57:06

标签: django postgresql import

我最近将我的项目中的数据库服务器从sqlite3更改为Postgresql,我有几个问题希望能解答我的问题。

  1. 据我所知,从sqlite切换到Postgres意味着我创建了新数据库及其中的表,对吧?我已经完成了,但是我没有看到在我的项目中创建的任何新文件向我显示我所创建的数据库是可见的。 (顺便说一下,我在settings.py中更改了数据库名称)

  2. 我可能应该提到我在虚拟环境中工作,我想知道这是否会以任何方式影响我的引用。我试图在Django中导入表来尝试计算表中的记录数但我得到错误:“没有名为psdemo的模块”。 (psdemo是我的数据库名称,我正在尝试使用以下内容导入表:

    from ps.psdemo import Product
    

    其中ps是我的应用程序,psdemo是我的数据库,产品是数据库中的表。

  3. 总之,我试图访问我的数据库和表,但我无法找到它们。我再说一遍,我的项目或我的虚拟环境中没有新的数据库文件(我已经彻底搜索过)但是如果我使用终端连接,我可以连接到我的虚拟环境并更改目录以进入应用程序文件夹然后如果我连接到Postgresql服务器我可以创建数据库,表格,可以插入到它们,进行查询等,但我无法从Django代码访问它们。

3 个答案:

答案 0 :(得分:2)

  

据我所知,从sqlite切换到Postgres意味着我   创建新数据库及其中的表,对吧?我弄完了   但是我还没有在项目中看到任何新文件给我看   我做的数据库是可见的。 (顺便说一句,我改变了   settings.py中的数据库名称

使用postgresql不会在项目目录中创建数据库文件。它们是在数据库服务器数据目录中创建的(如/ var / lib / postgres,它取决于分发)。您通常应该通过连接到PostgreSQL服务器的PostgreSQL客户端查询它,而不是直接弄乱文件。

您可以运行命令:

manage.py dbshell

答案 1 :(得分:2)

  

据我所知,从sqlite切换到Postgres意味着我创建了新数据库及其中的表,对吧?我已经完成了,但是我没有看到在我的项目中创建的任何新文件向我显示我所创建的数据库是可见的。 (顺便说一句,我在settings.py中更改了数据库名称)

所有与postgres有关的就是创建数据库。不是表格。一旦你调用syncdb,Django将创建将创建表,以及它认为有用的任何其他内容。

您在项目中不会像在sqlite中那样拥有任何新文件。如果你想查看你的数据库,你应该下载并安装pgadminIII(无论如何我会推荐)

  

我可能应该提到我在虚拟环境中工作,我想知道这是否会以任何方式影响我的引用。我试图在Django中导入表来尝试计算表中的记录数但我得到错误:“没有名为psdemo的模块”。 (psdemo是我的数据库名称,我正在尝试使用以下内容导入表:

在这里,您可以通过普通的python语法导入模型,然后引用您的表格。每个模型应代表一个表。首先定义模型,然后调用

python manage.py syncdb
  

总之,我正在尝试访问我的数据库和表格,但我无法找到它们。

见上文,但您一定要从postgres文档中阅读有关postgres安装的内容,并阅读psycopg2文档以及用于设置postgres数据库的Django文档。

答案 2 :(得分:0)

关于你的第一个问题,请参阅@ jpic的答案。

在第二个问题上,您的数据库不是包,也不从数据库导入模型。如果您在进行任何更改之前能够正确导入模型,将导入语句更改回原来的状态。