没有这样的表Django数据库

时间:2018-05-14 16:52:26

标签: sql django database sqlite django-models

因此,我创建了一个用于存储Gmail用户凭据的模型。 我想进行迁移,但它说没有这样的表:

django.db.utils.OperationalError: no such table: mainApp_credentialsmodel

我的模特:

from django.db import models

# Create your models here.

from django.contrib.auth.models import User
from django.db import models
import json


class CredentialsModel(models.Model):
  id = models.ForeignKey(User, primary_key=True,on_delete=models.CASCADE)
  credential = models.CharField(max_length=1000)

调用该模型以检查授权:

SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'

store = CredentialsModel.objects.all()
creds = store.get()


if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('mainApp/client_secret.json', SCOPES)
        creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))

2 个答案:

答案 0 :(得分:0)

python manage.py makemigrations 如果发生错误,请检查迁移文件夹并检查其中的文件。另外检查如果您的数据库在线,如果您有在线数据库,我上周遇到了这个问题,但这是天蓝色的问题。 在最后一种情况下,我将再次创建表(模型),将名称更改为类似的名称,但如果您在该表中有大量数据,那么我认为您不能这样做。

答案 1 :(得分:0)

看起来您的授权代码(包括CredentialsModel上的查询)位于模块级别。这意味着它在导入模块时运行,这在迁移有可能运行之前发生。

您必须确保任何数据库访问代码都在函数或方法中,并且不会全局调用。