Данные Djangos не могут быть импортированы в базу данных, мой код неправильный?
Я новичок в Django, и я хотел бы задать несколько вопросов
Я использовал слой модели для создания модели с полями в ней, она может создать поле user_id, movie_id в базе данных.
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()
Но я обнаружил, что моя база данных пуста и в ней нет данных.
Не сообщается об ошибке, выполните следующее: введите здесь описание изображения