django数据无法导入到数据库,是我代码的问题忙?

rename
  • 76

我是django的新手,我想请教以一下
我使用模型层创建了模型,里面有字段

class Rating(models.Model):
    user_id = models.CharField(max_length=16)
    movie_id = models.CharField(max_length=16)
    rating = models.DecimalField(decimal_places=2, max_digits=4)
    rating_timestamp = models.DateTimeField()
    type = models.CharField(max_length=8, default='explicit')

    def __str__(self):
        return "user_id: {}, movie_id: {}, rating: {}, type: {}"\
            .format(self.user_id, self.movie_id, self.rating, self.type)


class Cluster(models.Model):
    cluster_id = models.IntegerField()
    user_id = models.IntegerField()

    def __str__(self):
        return "{} in {}".format(self.user_id, self.cluster_id)

使用python xxx.py执行这段语句

import os
import urllib.request
import django
import datetime
import decimal
from tqdm import tqdm

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

django.setup()

from analytics.models import Rating


def create_rating(user_id, content_id, rating, timestamp):

    rating = Rating(user_id=user_id, movie_id=content_id, rating=decimal.Decimal(rating),
                    rating_timestamp=datetime.datetime.fromtimestamp(float(timestamp)))
    rating.save()

    return rating
def download_ratings():
    URL = 'https://gitee.com/zhangyoushang/wokkk/blob/master/latest/ratings.dat'
    response = urllib.request.urlopen(URL)
    data = response.read()

    print('download finished')
    return data.decode('utf-8')


def delete_db():
    print('truncate db')
    Rating.objects.all().delete()
    print('finished truncate db')


def populate():

    delete_db()

    ratings = download_ratings()

    for rating in tqdm(ratings.split(sep="\n")):
        r = rating.split(sep="::")
        if len(r) == 4:
            create_rating(r[0], r[1], r[2], r[3])


if __name__ == '__main__':
    print("Starting MovieGeeks Population script...")
    populate()

但是我发现我的数据库是空,里面没有数据。
也没有报错,执行如下:
2022-01-06 15-32-40 的屏幕截图.png
怎么弄也弄不好,求大神指点!

回复
阅读 491
1 个回答
✓ 已被采纳

应该是数据下载失败了,你检查下 download_ratings 的输出,可能是没有授权或 Gitee 另外做了限制,下载的并不是你要的文件,而是一个 HTML 文本,建议手动直接下好放到本地。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏