2015-09-06 67 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()