2012-03-21 73 views
0

我最近更改了我的項目中的數據庫服務器從sqlite3到Postgresql,我有幾個問題希望能給出我的問題的答案。Django從sqlite3切換到Postgresql問題

  1. 據我所知,從sqlite切換到Postgres意味着我創建了新的數據庫和表格,對吧?我已經這樣做了,但是我還沒有看到在我的項目中創建的任何新文件顯示我所創建的數據庫是可見的。 (順便說一句,我已經改變了settings.py中的數據庫名稱)

  2. 我可能應該提及我在虛擬環境中工作,我想知道是否會以任何方式影響我的引用。我試圖導入Django中的表來嘗試統計表中的記錄數,但是我得到錯誤:「沒有名爲psdemo的模塊」。 (psdemo是我的數據庫名稱,我試圖與導入表:

    from ps.psdemo import Product 
    

    其中Ps是我的應用程序,psdemo是我的數據庫和產品數據庫中的表

在。結論我試圖訪問我的數據庫和表,但我無法找到它們。我再說一遍,在我的項目或虛擬環境中沒有新的數據庫文件(我已經徹底搜索過),但是如果我使用終端連接我可以連接到我的虛擬環境並更改目錄以進入應用程序文件夾,然後如果我連接到Postgresql服務器,我可以創建數據庫,表s並且可以插入它們,進行查詢等,但是我無法從Django代碼訪問它們。

回答

2

I understand that switching from sqlite to Postgres implies that I create the new database and the tables inside it, right? I've done that but I haven't seen any new files created in my project to show me that the database I've made is visible. (Btw, I've changed the database name in settings.py)

所有你需要做的事情就是創建數據庫。不是桌子。一旦你調用syncdb,Django將創建將創建表,其他任何它認爲有用的表。

你不會像在sqlite中那樣在你的項目中有任何新文件。如果你想查看你的數據庫,你應該下載並安裝pgadminIII(這我會建議在任何情況下)

I probably should mention that I'm working in a virtual environment and I would like to know if that affects my references in any way. I've tried to import the tables in Django to try and count the number of records in a table but I get the error: "No module named psdemo". (psdemo is my database name and i'm trying to import the table with:

在這裏,你通過正常的Python語法導入模型,然後將它引用您的表。每個模型應該代表一個表。你先定義你的模型,然後調用

python manage.py syncdb 

In conclusion I'm trying to get access to my database and tables but I can't manage to find them.

見上面,但你絕對應該閱讀有關從Postgres的文檔Postgres的安裝,並閱讀psycopg2文檔以及爲建立一個Django文檔postgres數據庫。

+0

如果我能,我會upvote你的答案,但討厭downvote我的問題。非常感謝你! – 2012-03-21 14:56:47

2

I understand that switching from sqlite to Postgres implies that I create the new database and the tables inside it, right? I've done that but I haven't seen any new files created in my project to show me that the database I've made is visible. (Btw, I've changed the database name in settings.py)

數據庫文件不是在postgresql的項目目錄中創建的。它們在數據庫服務器數據目錄中創建(如/ var/lib/postgres,它取決於分發)。您通常應通過連接到PostgreSQL服務器的PostgreSQL客戶端來查詢它,而不是直接與文件混淆。

例如,您可以運行命令:

manage.py dbshell 
+0

好吧,我已經運行了命令,它將我連接到我用來連接的服務器。有關如何訪問我的數據的任何其他提示? – 2012-03-21 14:22:17

+0

您可以使用pg_dump命令進行導出,使用pg_restore命令進行恢復,或者使用manage.py loaddata/dumpdata,或者只使用一些模型,而django會處理其餘的問題! – jpic 2012-03-21 14:24:16

+0

我犯了一個小錯誤,並放棄了我的psdemo數據庫,現在看來我無法連接到dbshel​​l了。 – 2012-03-21 14:42:41

0

關於你的第一個問題,請@ JPIC的答案。

在第二個問題上,您的數據庫不是包,而且也不會從數據庫導入模型。如果您在進行任何更改之前能夠正確導入模型,則會將您的導入語句改回原樣。