class Order(db.Model): id = db.Column(db.Integer, autoincrement=True, primary_key=True) # 订单号 no = db.Column(db.String(50), unique=True, nullable=False, index=True) # 关联电影 movie_id = db.Column(db.Integer, db.ForeignKey(Movie.id)) # 影院 cinema_id = db.Column(db.Integer, db.ForeignKey(Cinema.cid)) # 影厅 hs_id = db.Column(db.Integer, db.ForeignKey(HallScheduling.hsid)) # 座位 ss_id = db.Column(db.Integer, db.ForeignKey(SeatScheduling.id)) seat_id = db.Column(db.Integer, db.ForeignKey(Seats.sid)) # 所购票数量 number = db.Column(db.Integer, nullable=False) # 取票码 ticket_code = db.Column(db.String(100)) # 总金额 total = db.Column(db.Numeric(7, 2)) # 创建的时间 create_date = db.Column(db.DateTime, default=datetime.datetime.now()) # 支付时间 pay_date = db.Column(db.DateTime) # 状态 1: 未支付 2: 已支付 3: 支付已使用 4: 支付未使用 status = db.Column(db.SmallInteger) # 支付有效期 out_time = db.Column(db.DateTime, default=datetime.datetime.now() + datetime.timedelta(minutes=15)) is_delete = db.Column(db.Boolean, default=True)
class Classes(db.Model): cid = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(16), index=True, unique=True, nullable=False) chinese = db.Column(db.Integer, db.ForeignKey('teachers.tid')) math = db.Column(db.Integer, db.ForeignKey('teachers.tid')) english = db.Column(db.Integer, db.ForeignKey('teachers.tid')) sport = db.Column(db.Integer, db.ForeignKey('teachers.tid')) is_status = db.Column(db.Integer, nullable=False) teachers = db.relationship('Teachers', backref='classes') students = db.relationship('Students', backref='classes')
class HallScheduling(db.Model): hsid = db.Column(db.Integer, primary_key=True, autoincrement=True) # 1未开始 2正在放映 3结束放映 status = db.Column(db.Integer, default=1) start = db.Column(db.DateTime) end = db.Column(db.DateTime) origin_price = db.Column(db.Numeric(7, 2)) current_price = db.Column(db.Numeric(7, 2)) movie_id = db.Column(db.Integer, db.ForeignKey(Movie.id)) cinema_id = db.Column(db.Integer, db.ForeignKey(Cinema.cid)) hall_id = db.Column(db.Integer, db.ForeignKey(Hall.hid)) is_delete = db.Column(db.Boolean, default=True) ss_list = db.relationship('SeatScheduling', lazy='dynamic', backref='hs')
class Seats(db.Model): sid = db.Column(db.Integer, primary_key=True, autoincrement=True) # 1.普通 2.豪华 3 超豪华 type = db.Column(db.Integer, nullable=False) x = db.Column(db.Integer, nullable=False) y = db.Column(db.Integer, nullable=False) status = db.Column(db.Boolean, default=True) is_active = db.Column(db.Boolean, default=True) # 是否可选 is_choose = db.Column(db.Boolean, default=True) # 外键设置 cid = db.Column(db.Integer, db.ForeignKey(Cinemas.cid)) hid = db.Column(db.Integer, db.ForeignKey(Halls.hid))
class Address(db.Model): aid = db.Column(db.Integer, primary_key=True, autoincrement=True) uid = db.Column(db.Integer, db.ForeignKey(User.uid, ondelete='CASCADE')) province = db.Column(db.String(100), nullable=False) city = db.Column(db.String(100), nullable=False) detail = db.Column(db.TEXT, nullable=False) phone = db.Column(db.String(20))
class UserFund(db.Model): __tablename__ = 'userfund' id = db.Column(db.Integer, primary_key=True, autoincrement=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) balance = db.Column(db.String(30)) # 可用余额 pay_in_ing = db.Column(db.String(30)) # 待收入 pay_out_ing = db.Column(db.String(30)) # 待支出 update_time = db.Column(db.DateTime, default=datetime.now)
class ErrorData(db.Model): __tablename__ = 'error_data' id = db.Column(db.String(10), primary_key=True, autoincrement=True) time = db.Column(db.DateTime, nullable=True) value = db.Column(db.Float, nullable=False) sensor_id = db.Column(db.String(10), db.ForeignKey('bridge.id', ondelete='CASCADE'), nullable=False)
class CategoryType(db.Model): type_id = db.Column(db.Integer, primary_key=True, autoincrement=True) sub_id = db.Column(db.Integer, db.ForeignKey(SubCategory.sub_id)) name = db.Column(db.String(60), unique=True, index=True, nullable=False) status = db.Column(db.Boolean, default=1) sort = db.Column(db.Integer) create_date = db.Column(db.DateTime, default=datetime.now()) is_delete = db.Column(db.Boolean, default=0)
class Record(db.Model): __tablename__ = 'record' id = db.Column(db.String(10), primary_key=True, autoincrement=True) time = db.Column(db.DateTime, nullable=False) operation = db.Column(db.String(20), nullable=False) user_id = db.Column(db.String(10), db.ForeignKey('user.id', ondelete='CASCADE'), nullable=False)
class Seats(db.Model): sid = db.Column(db.Integer, primary_key=True, autoincrement=True) # 1.普通 2.豪华 3 超豪华 type = db.Column(db.Integer, nullable=False) # 座位的坐标 x = db.Column(db.Integer, nullable=False) y = db.Column(db.Integer, nullable=False) # True 正常 False 损毁 status = db.Column(db.Boolean, default=True) # 是否可选 is_choose = db.Column(db.Boolean, default=True) # 是否删除 is_delete = db.Column(db.Boolean, default=True) # 外键设置 cid = db.Column(db.Integer, db.ForeignKey(Cinema.cid)) hid = db.Column(db.Integer, db.ForeignKey(Hall.hid)) ss = db.relationship('SeatScheduling', uselist=False, backref='seat')
class Platoon(db.Model): pid = db.Column(db.Integer, primary_key=True, autoincrement=True) # 原始价格 origin_price = db.Column(db.Numeric(7, 2), default=0.00) # 折扣价 discount_price = db.Column(db.Numeric(7, 2), default=0.00) # 影片开始时间 start_time = db.Column(db.DateTime) end_time = db.Column(db.DateTime) # 1 未放映 2 正在放映 3结束放映 status = db.Column(db.Integer, default=1) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) update_date = db.Column(db.DateTime, default=datetime.datetime.now()) is_delete = db.Column(db.Boolean, default=False) # 外键相关 mid = db.Column(db.Integer, db.ForeignKey(Movies.mid)) hid = db.Column(db.Integer, db.ForeignKey(Halls.hid)) cid = db.Column(db.Integer, db.ForeignKey(Cinemas.cid))
class Halls(db.Model): hid = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(100), nullable=False) # 1表示 2D 21 3D 3表示4D 4 表示 3D MAX screen_type = db.Column(db.Integer, nullable=False) seat_num = db.Column(db.Integer, nullable=False) status = db.Column(db.Boolean, default=True) is_active = db.Column(db.Boolean, default=True) cid = db.Column(db.Integer, db.ForeignKey(Cinemas.cid)) platoons = db.relationship('Platoon', backref='halls', lazy='dynamic')
class Res(db.Model): # 电影详情 film子表 __tablename__ = 't_res' id = db.Column(db.String(255), primary_key=True) episodes = db.Column(db.Integer) # 发作? is_use = db.Column(db.Integer) link = db.Column(db.Text) # 下载链接 link_type = db.Column(db.String(255)) # 链接类型 name = db.Column(db.Text) # 电影名称 update_time = db.Column(db.String(255)) # 上传时间 film_id = db.Column(db.String(255), db.ForeignKey(Film.id)) # film id
class Image(db.Model): img_id = db.Column(db.Integer, autoincrement=True, primary_key=True) path = db.Column(db.String(255), unique=True, default='') # 1表示用户头像 2表示商户头像 type = db.Column(db.SmallInteger, nullable=False) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) # 外键字段(主表类名.字段) # 查询字段 uid = db.Column(db.Integer, db.ForeignKey(User.uid), unique=True) user = db.relationship('User', back_populates='image', uselist=False)
class UserBill(db.Model): __tablename__ = 'userbill' id = db.Column(db.Integer, primary_key=True, autoincrement=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) b_type = db.Column(db.String(1)) fund_type = db.Column(db.String(1)) number = db.Column(db.String(20)) balance = db.Column(db.String(20)) memo = db.Column(db.String(50)) ref_info = db.Column(db.String(100)) create_time = db.Column(db.DateTime, default=datetime.now)
class Article(db.Model): __tablename__ = 'article' __searchable__ = ['title', 'content'] # 搜索字段 __analyzer__ = SimpleAnalyzer() id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) tag1 = db.Column(db.String(100), nullable=True) tag2 = db.Column(db.String(100), nullable=True) tag3 = db.Column(db.String(100), nullable=True) short_content = db.Column(db.String(512), nullable=True) content = db.Column(db.Text, nullable=False) update_time = db.Column(db.DateTime, default=datetime.now) create_time = db.Column(db.DateTime, default=datetime.now()) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) user = db.relationship('User', backref=db.backref('articles')) # 正向与反向引用 category = db.relationship('Category', backref=db.backref('articles')) # 正向与反向引用 is_delete = db.Column(db.Boolean, default=0)
class UserShop(db.Model): sid = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), index=True, unique=True) #类名小写.关联子段,只是单纯的建立一个外键关系 cid = db.Column(db.Integer, db.ForeignKey('cate.cid')) #同上 # cid = db.Column(db.Integer, db.ForeignKey(Cate.cid)) #双向引用时候使用 cate = db.relationship('Cate', back_populates='shops') #一对一 detail = db.relationship('Detail', uselist=False, backref='usershop')
class InspectData(db.Model): __tablename__ = 'inspect_data' id = db.Column(db.String(10), primary_key=True, autoincrement=True) time = db.Column(db.DateTime, nullable=True) sensor_id = db.Column(db.String(10), nullable=True) sensor_state = db.Column(db.Boolean, nullable=True) bridge_id = db.Column(db.String(10), nullable=True) bridge_state = db.Column(db.Boolean, nullable=True) picture_route = db.Column(db.String(50), nullable=True) # 图片文件路径 remark = db.Column(db.String(200), nullable=True) user_id = db.Column(db.String(10), db.ForeignKey('user.id', ondelete='CASCADE'), nullable=False)
class Hall(db.Model): hid = db.Column(db.Integer, primary_key=True, autoincrement=True) # 影厅的名字 name = db.Column(db.String(100), nullable=False) # 1表示 2D 21 3D 3表示4D 4 表示 3D MAX screen_type = db.Column(db.Integer, nullable=False) # 影厅的座位 seat_num = db.Column(db.Integer, nullable=False) # 影厅的状态 1 表示营业 2 表示打烊 status = db.Column(db.Integer, default=1) # 是否删除 is_delete = db.Column(db.Boolean, default=True) cid = db.Column(db.Integer, db.ForeignKey(Cinema.cid)) hs_list = db.relationship('HallScheduling', lazy='dynamic', backref='hall')
class Order(db.Model): id = db.Column(db.Integer, autoincrement=True, primary_key=True) # 订单号 no = db.Column(db.String(50), unique=True, index=True, nullable=False) movie_id = db.Column(db.Integer, db.ForeignKey(Movie.id), nullable=False) cinema_id = db.Column(db.Integer, db.ForeignKey(Cinema.cid), nullable=False) hs_id = db.Column(db.Integer, db.ForeignKey(HallScheduling.hsid)) ss_id = db.Column(db.Integer, db.ForeignKey(SeatScheduling.id)) seat_id = db.Column(db.Integer, db.ForeignKey(Seats.sid)) # 票数 number = db.Column(db.Integer, nullable=False) # 取票码 ticket_code = db.Column(db.String(100)) # 总金额 total = db.Column(db.Numeric(7, 2)) # 创建的时间 create_date = db.Column(db.DateTime, default=datetime.datetime.now()) pay_date = db.Column(db.DateTime) # 1 表示未支付 2 已支付, 3 表示支付已取票 4 表示支付未取票 5 退票 status = db.Column(db.SmallInteger, nullable=False) # 有效期 out_time = db.Column(db.DateTime, default=datetime.datetime.now() + datetime.timedelta(minutes=15)) is_delete = db.Column(db.Boolean, default=False)
class SubCategory(db.Model): sub_id = db.Column(db.Integer, autoincrement=True, primary_key=True) # 创建外键字段 # 主表类名.主键字段 或者 主表表名.列名('category.cate_id') # 如果给表名或者列名起别名,要换成别名 cate_id = db.Column(db.Integer, db.ForeignKey(Category.cate_id)) name = db.Column(db.String(60), unique=True, index=True, nullable=False) sort = db.Column(db.Integer) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) status = db.Column(db.Boolean, default=True) is_delete = db.Column(db.Boolean, default=True) types = db.relationship('CategoryType', lazy='dynamic', backref='categoryType')
class Sensor(db.Model): __tablename__ = 'sensor' id = db.Column(db.String(10), primary_key=True, autoincrement=True) type = db.Column(db.String(10), nullable=False) # 传感器类型 name = db.Column(db.String(10), nullable=False) # 传感器名 long = db.Column(db.Boolean, nullable=False) # 是否是长时传感器 bridge_id = db.Column(db.String(10), db.ForeignKey('bridge.id', ondelete='CASCADE'), nullable=False) # 所属桥梁id error_data_list = db.relationship('error_data', backref='sensor', cascade='all, delete-orphan', passive_deletes=True) raw_data_list = db.relationship('raw_data', backref='bridge', cascade='all, delete-orphan', passive_deletes=True)
class SubCategory(db.Model): sub_id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 创建外键字段 cate_id = db.Column(db.Integer, db.ForeignKey(Category.cate_id, ondelete='CASCADE')) # 表名(如果设置__tablename__则使用修改后的名称) +. +字段(如果设置name则使用修改后的名称) # cate_id = db.Column(db.Integer,db.ForeignKey('category.cate_id')) name = db.Column(db.String(60), unique=True, index=True, nullable=False) status = db.Column(db.Boolean, default=1) sort = db.Column(db.Integer) create_date = db.Column(db.DateTime, default=datetime.now()) is_delete = db.Column(db.Boolean, default=0) # uselist = True(默认) 一对多, uselist = Fasle 一对一 types = db.relationship('CategoryType', uselist=True, lazy='dynamic', backref='sub')
class Students(db.Model): STATUS = { '休学': 0, '在读': 1, '请假': 2, '毕业': 3, '辍学': 4, } sid = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(16), index=True, nullable=False) pwd = db.Column(db.String(128), nullable=False) email = db.Column(db.String(32), index=True, nullable=False) # 头像 head_img = db.Column(db.String(64)) # 入学年 period = db.Column(db.Integer, nullable=False) # 性别 sex = db.Column(db.Boolean, nullable=False) # 年龄 old = db.Column(db.Integer) # 班级 cls = db.Column(db.Integer, db.ForeignKey('classes.cid')) is_status = db.Column(db.Integer) classes = db.relationship('Classes', backref='students')
class Subclass(db.Model): # 电影名称的类型 子表 动作 喜剧 __tablename__ = 't_subclass' id = db.Column(db.String(255), primary_key=True) is_use = db.Column(db.Integer) name = db.Column(db.String(32)) catalog_id = db.Column(db.String(255), db.ForeignKey(Catalog.id))
class Photo(db.Model): p_id = db.Column(db.Integer, primary_key=True, autoincrement=True) url = db.Column(db.String(100), unique=True, nullable=False) type = db.Column(db.Integer, nullable=False) des_id = db.Column(db.Integer, db.ForeignKey(Destination.des_id))
class Raty(db.Model): # 评分 Film一对多 film子表 __tablename__ = 't_raty' id = db.Column(db.String(255), primary_key=True) en_time = db.Column(db.String(255)) film_id = db.Column(db.String(255), db.ForeignKey(Film.id)) score = db.Column(db.String(32))
class Type(db.Model): # 电影名称类型的 子类型 爱情 犯罪等 __tablename__ = 't_type' id = db.Column(db.String(255), primary_key=True) is_use = db.Column(db.Integer) name = db.Column(db.String(32)) subclass_id = db.Column(db.String(255), db.ForeignKey(Subclass.id))
class Address(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) city = db.Column(db.String(100), nullable=False) detail = db.Column(db.Text) # 建立外键字段 外键一定要在多的一方 uid = db.Column(db.Integer, db.ForeignKey(User.uid))
class SeatScheduling(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) seat_id = db.Column(db.Integer, db.ForeignKey(Seats.sid)) hall_id = db.Column(db.Integer, db.ForeignKey(Hall.hid)) hs_id = db.Column(db.Integer, db.ForeignKey(HallScheduling.hsid)) is_delete = db.Column(db.Boolean, default=False)