film_recom_sys/models.py
2025-01-31 21:36:31 +08:00

67 lines
2.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from extensions import db
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True, nullable=False)
password = db.Column(db.String(255), nullable=False)
nickname = db.Column(db.String(100), nullable=False)
user_type = db.Column(db.String(1), nullable=False)
class Movie(db.Model):
__tablename__ = 'movie'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(255), nullable=False)
release_date = db.Column(db.String(20), nullable=True)
genres = db.Column(db.String(255), nullable=True)
rating_count = db.Column(db.Integer, default=0)
average_rating = db.Column(db.Float, default=0.0)
actor = db.Column(db.Text, nullable=True)
similar_movie = db.Column(db.String(255), nullable=True)
class Genre(db.Model):
__tablename__ = 'genre'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
class CategorySearch(db.Model):
__tablename__ = 'category_search'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id', ondelete='CASCADE'), nullable=False)
category_id = db.Column(db.Integer, db.ForeignKey('genre.id', ondelete='CASCADE'), nullable=False)
search_times = db.Column(db.Integer, default=0)
class Search(db.Model):
__tablename__ = 'search'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id', ondelete='CASCADE'), nullable=False)
keyword = db.Column(db.String(255), nullable=False)
search_times = db.Column(db.Integer, default=1)
class Rating(db.Model):
__tablename__ = 'rating'
id = db.Column(db.Integer, primary_key=True)
item_id = db.Column(db.Integer, nullable=False) # 指电影 ID
user_id = db.Column(db.Integer, nullable=False) # 指用户 ID
rating = db.Column(db.Integer, nullable=False) # 用户评分,范围 1-5
class UserDefault(db.Model):
__tablename__ = 'user_default' # 与实际表名一致
user_id = db.Column(db.Integer, primary_key=True) # 用户唯一标识符
age = db.Column(db.Integer, nullable=False) # 用户年龄
gender = db.Column(db.String(1), nullable=False) # 性别M 表示男性W 表示女性
occupation = db.Column(db.Integer, db.ForeignKey('occupation.id'), nullable=False) # 外键,指向 occupation 表的 id
# 定义关系,使用唯一的 back_populates 名称
occupation_details = db.relationship("Occupation", back_populates="user_defaults")
class Occupation(db.Model):
__tablename__ = 'occupation' # 与实际表名一致!!
id = db.Column(db.Integer, primary_key=True) # 职业唯一标识符
name = db.Column(db.String(100), nullable=False) # 职业名称
# 定义关系,与 UserDefault 形成双向关联
user_defaults = db.relationship("UserDefault", back_populates="occupation_details")