2015-09-06 80 views
1

我有一個表MySQL名爲main_A與2列。 在我models.py我:與django外殼accessing表

from django.db import models 
class main_A(models.Model): 
     x= models.IntegerField(primary_key = True) 
     y= models.IntegerField(blank = True) 

我要查看它是從Django的殼行。 注意:數據庫中的表已存在

這是我的項目文件的視圖: http://s18.postimg.org/musyd3pe1/1234.png

我statring Django的有:

python manage.py shell 
現在

...我應該寫:

from models import main_A 

但說:

ImportError: NO module named models

我可以通過這個錯誤只有當我寫:

from main.models import main_A 

然後我就可以,例如做:

p1 = main_A.objects.all() 
p1 

,但它告訴我:

table main_main_A doesn't exists

我知道Django的自動添加包的名稱到所有表......這就是爲什麼我得到main_main_A,但我不明白爲什麼from models import main_A不起作用。

我該如何獲得通過?

回答

2

如果你的數據庫表中的Django被命名爲main_A然後models.py你應該將該類定義爲Amain_A

from django.db import models 
class A(models.Model): 
     x= models.IntegerField(primary_key = True) 
     y= models.IntegerField(blank = True) 

然後在外殼:

from main.models import A 
p1 = A.objects.all() 
p1 
-2
when u created the model in models.py than u need 2 command 
    first. 
    python manage.py makemigrations 
    second. 
    python manage.py migrate 

    after you get the results empty 
    >>> p1 = main_A.objects.all() 
    >>> p1 
    [] 
+0

但是從我讀到的東西... makemigrations和migrate採取模型,並在數據庫中創建表...我不想創建表..表alrady存在那裏,我只是想訪問它。 – aayushdagra

+2

請看看問題更新。您的答案已過時,可以刪除。 –

+0

@aayushdagra你必須刪除遷移文件夾中的舊遷移,不要刪除__pycache__文件夾,你可以再試一次後python manage.py makemigrations和python manage.py migrate – PyDroid

1

像PyDroid說, 你需要運行2個命令,進入shell,然後將你的表導入shell,然後查詢你的data

python manage.py makemigrations 
python manage.py migrate 
python manage.py shell 
from apps.yourappname import * 
Main_A.objects.all().values()