尝试进行迁移时出现错误,但未创建表

时间:2021-01-08 05:47:36

标签: python-3.x django postgresql django-models

所以我在尝试运行“python3 manage.py makemigrations”时遇到了一些错误。一小段错误如下:

Traceback (most recent call last):
 File "/home/vincentqchen/.venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
  return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedTable: relation "catalog_video" does not exist
LINE 1: INSERT INTO "catalog_video" ("url", "title", "length", "view...
                    ^

这是我的模型文件夹:

from django.db import models
import os
from datetime import datetime
#Google api
import json
from googleapiclient.discovery import build
#Scheduler
from apscheduler.schedulers.background import BackgroundScheduler

class Video(models.Model):
    #youtube_cache = models.ForeignKey(YoutubeCache,on_delete=models.CASCADE)
    url = models.CharField(max_length=600, null=False, blank=False)
    title = models.CharField(max_length=600, null=False, blank=False)
    length = models.CharField(max_length=600, null=False, blank=False)
    views = models.IntegerField(null=False, blank=False)
    date = models.DateField(auto_now=False, auto_now_add=False)
    ytType = models.CharField(max_length=30, null=False, blank=False)
# Create your models here.
def ytCacheHelper():
    youtube = build('youtube','v3',developerKey = Secret)

    #Most popular videos in the us
    YTrequest = youtube.videos().list(
        part="snippet,contentDetails,statistics",
        chart="mostPopular",
        regionCode="US"
    )
    response = YTrequest.execute()
    #Python dictionary of all top yt videos
    items = response['items']
    for x in range(len(items)):
        # Parts of video
        snippet = items[x]['snippet']
        contentDetails = items[x]['contentDetails']
        statistics = items[x]['statistics']
        # Figure out length of video
        length = contentDetails['duration']
        length = length[2:]
        #Figure out date of video
        date = snippet['publishedAt']
        year = int(date[:4])
        month = int(date[5:7])
        day = int(date[8:10])
        hour = int(date[11:13])
        minute = int(date[14:16])
        date = datetime(year, month, day, hour, minute)
        # Set up the video model
        mostViewedVideo = Video(url='https://www.youtube.com/watch?v='+items[x]['id'], title=snippet['title'], length=length, views=statistics['viewCount'], date=date, ytType='mostPopular')
        mostViewedVideo.save()

#Schedule daily database updates
scheduler = BackgroundScheduler()
scheduler.add_job(ytCacheHelper, 'interval', seconds=3)
scheduler.start()

我有一个调度程序每天都在运行以从 yt 获取信息(出于测试目的将其设置为 3 秒)。我想可能是 ytCacheHelper 引起了问题,所以我将其注释掉并重新进行了迁移。不幸的是,postgres 仍然没有创建表。我尝试删除我的整个数据库并重做迁移,但这没有用。它仍然给了我同样的错误。

这是迁移文件

# Generated by Django 3.1.4 on 2021-01-08 04:26

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Video',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('url', models.CharField(max_length=600)),
                ('title', models.CharField(max_length=600)),
                ('length', models.CharField(max_length=600)),
                ('views', models.IntegerField()),
                ('date', models.DateField()),
                ('ytType', models.CharField(max_length=30)),
            ],
        ),
    ]

编辑 - 我不知道这是如何工作的,但我只是更改了我的模型名称,然后重新进行了迁移,它以某种方式起作用了。

EDIT 2 - 不知何故又坏了。我很混乱。我更改了我的模型并运行 makemigrations 并且它说没有进行任何更改。而且我再次遇到相同的错误。我的迁移文件夹也不存在了。

0 个答案:

没有答案