2016-09-28 42 views
1

我通過了django doc polls示例。現在我有一個數據庫name.info.db可用。我把它放在與manage.py相同的目錄中,也是db.sqlite3所在的目錄。 我改變settings.py無法在django中訪問簡單的數據庫

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.sqlite3', 
    'NAME': os.path.join(BASE_DIR, 'name.info.db'), 
}} 

我的models.py是

class PItable(models.Model): 
    pid_text = models.CharField(max_length=200) 
    lname_text = models.CharField(max_length=200, null=True) 
    fname_text = models.CharField(max_length=200, null=True) 
    affs_text = models.CharField(max_length=2000, null=True) 
    pmidlist_text = models.CharField(max_length=2000, null=True) 
    clustering_text = models.CharField(max_length=2000, null=True) 
    def __str__(self): 
     return self.fname_text 

我從視圖和模型中刪除的問題和選擇(從民調例子)。 我做

python manage.py makemigrations pidb 
python manage.py migrate 

我得到了以下消息,該消息並沒有表現出我的數據庫,仍顯示已刪除模型(問題,選擇)。我在這裏做錯了什麼?當我從python shell PItable.objects.filter(id=1)訪問時,它顯示爲空[]。謝謝你的幫助!!

$ python manage.py sqlmigrate pidb 0001 

BEGIN; 
-- 
-- Create model Choice 
-- 
CREATE TABLE "pidb_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL); 
-- 
-- Create model Question 
-- 
CREATE TABLE "pidb_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(200) NOT NULL, "pub_date" datetime NOT NULL); 
-- 
-- Add field question to choice 
-- 
ALTER TABLE "pidb_choice" RENAME TO "pidb_choice__old"; 
CREATE TABLE "pidb_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id" integer NOT NULL REFERENCES "pidb_question" ("id")); 
INSERT INTO "pidb_choice" ("id", "choice_text", "question_id", "votes") SELECT "id", "choice_text", NULL, "votes" FROM "pidb_choice__old"; 
DROP TABLE "pidb_choice__old"; 
CREATE INDEX "pidb_choice_7aa0f6ee" ON "pidb_choice" ("question_id"); 

COMMIT; 
+0

你到底在問什麼?你刪除了表格中的條目還是刪除了表格? – e4c5

+0

據我所知,你已經創建了數據庫表,但它們是空的 - 你沒有插入任何數據。你期望數據庫記錄奇蹟般地出現嗎? –

+0

數據庫name.info.db已經由其他人使用python代碼創建。我只是用它。我可以從python代碼訪問數據。現在我需要在django中重做整個項目。 – user2607925

回答

0

閱讀關於managed option。如果將其設置爲False,則不會爲該模型執行數據庫表創建或刪除操作。如果模型表示已經通過其他方式創建的現有表或數據庫視圖,這很有用。

class PItable(models.Model): 
    pid_text = models.CharField(max_length=200) 
    lname_text = models.CharField(max_length=200, null=True) 
    fname_text = models.CharField(max_length=200, null=True) 
    affs_text = models.CharField(max_length=2000, null=True) 
    pmidlist_text = models.CharField(max_length=2000, null=True) 
    clustering_text = models.CharField(max_length=2000, null=True) 

    class Meta(object): 
     managed = False 

    def __str__(self): 
     return self.fname_text