class User(db.Model): # name 表示列名 # __tablename__='' # index 索引 uid = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(64), index=True, unique=True, nullable=False) password = db.Column(db.String(100), nullable=False) age = db.Column(db.Integer) create_date = db.Column(db.DateTime) id_delete = db.Column(db.Boolean) price = db.Column(db.Numeric(7, 2)) """ 重要参数 argument 关联的类名 uselist 一对一的关系 一对多必须是设置uselist=True backref 反向引用的名称 lazy 懒加载 """ address_list = db.relationship('Address', uselist=True, backref='user', lazy='dynamic')
class User(db.Model, UserMixin): #这里继承的必须改成id 不是id要重写底层 id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(64), unique=True, nullable=False) password_hash = db.Column(db.String(128), nullable=False) # 0 表示未激活 1 表示激活 is_delete = db.Column(db.Integer, default=0) # 验证数据 # 声明的时候是方法 # 使用的时候是属性 @property def password(self): return self.password_hash # md5 @password.setter def password(self, password): if len(password) >= 8: # 对密码进行加密 self.password_hash = generate_password_hash(password) else: raise Exception('密码不符合规范') # 明文 123456 def verify_password(self, password): return check_password_hash(self.password_hash, password)
class Cinema(db.Model): """ 影院表 """ cid = db.Column(db.Integer, primary_key=True, autoincrement=True) # 影院的名称 name = db.Column(db.String(100), unique=True, nullable=False, index=True) # 城市 city = db.Column(db.String(64)) # 区域 district = db.Column(db.String(64)) # 地址 address = db.Column(db.String(255)) # 联系电话 phone = db.Column(db.String(11)) # 评分 score = db.Column(db.Float(3, 1)) # 影厅的数量 hall_num = db.Column(db.Integer) # True 营业 false 休息 flag = db.Column(db.Integer, default=1) # 服务费 service_money = db.Column(db.Numeric(3, 1)) # 限购数量 astrict = db.Column(db.Integer) # 是否删除 is_delete = db.Column(db.Boolean, default=True) hs_list = db.relationship('HallScheduling', lazy='dynamic', backref='cinema') halls = db.relationship('Hall', lazy='dynamic', backref='cinema')
class Catalog(db.Model): # 分类名称表 __tablename__ = 't_catalog' id = db.Column(db.String(255), primary_key=True) is_use = db.Column(db.Integer) name = db.Column(db.String(32)) sort = db.Column(db.Integer) # 排序 isVip = db.Column(db.Integer, default=0)
class User(db.Model, UserMixin): uid = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(64), unique=True, index=True, nullable=False) _password = db.Column(db.String(128), nullable=False) _is_active = db.Column(db.Boolean, default=False) # 表示用户被管理员干掉了 is_delete = db.Column(db.Boolean, default=False) @property def is_active(self): return self._is_active def get_id(self): return self.uid @property def password(self): return self._password # 对密码进行加密 @password.setter def password(self, password): if password: self._password = custom_app_context.encrypt(password) else: raise Exception('password is not null') # 验证密码 def verify_password(self, password): return custom_app_context.verify(password, self._password)
class Vipcode(db.Model): __tablename__ = 't_vipcode' id = db.Column(db.String(255), primary_key=True) code = db.Column(db.String(32)) is_use = db.Column(db.Integer) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) expire_date = db.Column(db.DateTime, default=datetime.datetime.now())
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 Goods(db.Model): __tablename__ = "goods" id = db.Column(db.Integer, autoincrement=True, primary_key=True) good_id = db.Column(db.String(32), unique=True) cid = db.Column(db.Integer) # shop_id = db.Column(db.Integer, db.ForeignKey(GcProperty.id)) # 外键 # cid = db.Column(db.Integer) # shop_id = db.Column(db.Integer) # brand_id = db.Column(db.Integer) ################ good_name = db.Column(db.String(255), nullable=False) show_img = db.Column(db.String(255)) good_desc = db.Column(db.String(255)) good_price = db.Column(db.Numeric(11, 2)) # stocks = db.Column(db.Integer) # good_tips = db.Column(db.String(255)) # is_hot = db.Column(db.Integer) # is_new = db.Column(db.Integer) # is_recom = db.Column(db.Integer) # is_sale = db.Column(db.Integer) # good_status = db.Column(db.Integer) # sale_volume = db.Column(db.Integer) # sale_time = db.Column(db.DateTime, default=datetime.datetime.now()) # # 0:删除 1:有效 # is_delete = db.Column(db.Boolean, default=1) # # 创建时间 # create_time = db.Column(db.DateTime, default=datetime.datetime.now())
class Banner(db.Model): banner_id = db.Column(db.Integer(), primary_key=True, autoincrement=True) title = db.Column(db.String(64), index=True, unique=True, nullable=False) image = db.Column(db.String(64)) detail_url = db.Column(db.String(64)) order = db.Column(db.Integer) create_time = db.Column(db.DateTime, default=datetime.datetime.now())
class Movies(db.Model): mid = db.Column(db.Integer, autoincrement=True, primary_key=True) # 电影中文名 show_name = db.Column(db.String(64), nullable=False, index=True, unique=True) # 电影英文名称 show_name_en = db.Column(db.String(64), nullable=False, index=True, unique=True) # 导演 director = db.Column(db.String(32), nullable=False, index=True) # 主演 leading_role = db.Column(db.String(256), nullable=False, index=True) # 影片类型 type = db.Column(db.String(64), nullable=False) # 影片国家 country = db.Column(db.String(32), nullable=False) # 语言 language = db.Column(db.String(32), nullable=False) # 影片长度 duration = db.Column(db.String(32), nullable=False) # 播放类型 IMAX 2D 3D 4D screening_model = db.Column(db.String(32), nullable=False) # 上映日期 open_day = db.Column(db.Date) # 影片海报 pic = db.Column(db.String(256), nullable=False) # 1即将上映 2 正在热映 flag = db.Column(db.SmallInteger, default=1) # 是否删除 is_delete = db.Column(db.Boolean, default=1)
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 Movies(db.Model): __tablename__ = 'movies' mid = db.Column(db.Integer,primary_key=True,autoincrement=True) id = db.Column(db.Integer) #电影中文名 chinese_name = db.Column(db.String(64),unique=False) #英文名称 englist_name = db.Column(db.String(64),unique=False) # 导演 director = db.Column(db.String(64)) #主演 leadingRole = db.Column(db.String(64)) #电影类型 type = db.Column(db.String(64)) #国家 country = db.Column(db.String(64)) #语言 language = db.Column(db.String(64)) #时长 duration = db.Column(db.String(64)) # 放映模式 screening_model = db.Column(db.String(10)) #上映的时间 openday = db.Column(db.DateTime, default=datetime.datetime.now()) #影片背景图 bg_pic = db.Column(db.String(64)) # 状态 1 表示热映 2 即将上映 flag = db.Column(db.Integer, default=1) # 是否删除 is_delete = db.Column(db.Boolean, default=False)
class Banner(db.Model): bid = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100)) image = db.Column(db.String(100)) detail_url = db.Column(db.String(100)) order = db.Column(db.Integer, default=0) create_time = db.Column(db.DateTime, default=datetime.datetime.now()) is_delete = db.Column(db.Boolean, default=False)
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 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 User(db.Model,UserMixin): __tablename__='user' id=db.Column(db.Integer,primary_key=True) name=db.Column(db.String(30),nullable=False) pwd=db.Column(db.String(30),nullable=False) def __repr__(self): return "User {}".format(self.name)
class User(db.Model): uid = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(64), index=True, unique=True, nullable=False) password = db.Column(db.String(100), nullable=False) email = db.Column(db.String(100)) phone = db.Column(db.Integer, nullable=False) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) url = db.Column(db.String(100)) is_delete = db.Column(db.Boolean, default=False)
class Shop(db.Model): shop_id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), index=True, unique=True) sub_title = db.Column(db.String(64)) original_price = db.Column(db.Numeric(10, 2)) promote_price = db.Column(db.Numeric(10, 2)) stock = db.Column(db.Integer) cate_id = db.Column(db.Integer) create_date = db.Column(db.DateTime, default=datetime.datetime.now())
class TodoList(db.Model): __tablename__ = 'todolist' id=db.Column(db.Integer,primary_key=True) user_id=db.Column(db.Integer,nullable=False) title=db.Column(db.String(254),nullable=False) status=db.Column(db.String(10),nullable=False) create_time=db.Column(db.Integer,default=int(time.time())) def __repr__(self): return "TodoList {}".format(self.title)
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 Bridge(db.Model): __tablename__ = 'bridge' id = db.Column(db.String(10), primary_key=True, autoincrement=True) name = db.Column(db.String(20), nullable=False) address = db.Column(db.String(50), nullable=False) state = db.Column(db.Boolean, nullable=False) sensor_list = db.relationship('sensor', backref='bridge', cascade='all, delete-orphan', passive_deletes=True)
class Url(db.Model): id = db.Column(db.Integer, primary_key=True) short_url_code = db.Column(db.String(32)) long_url = db.Column(db.String(1000)) create_time = db.Column(db.DateTime(), default=datetime.now) @classmethod def is_unique_short_url(cls, value=None): """ 传入code判断是否唯一""" urls = cls.query.filter_by(short_url_code=value).first() if urls: return False else: return True @property def short_url(self): """短域名""" return current_app.config['BASE_URL'] + self.short_url_code @classmethod def generic_short_url_code(cls): short_url_code = generic_codes(5) return short_url_code if cls.is_unique_short_url( short_url_code) else generic_short_url_code(cls) @classmethod def save_url(cls, long_url): url = cls.has_the_long_url(long_url) if url: return url short_url_code = cls.generic_short_url_code() url = cls(short_url_code=short_url_code, long_url=long_url) db.session.add(url) db.session.commit() return url @classmethod def has_the_long_url(cls, long_url): url = cls.query.filter_by(long_url=long_url).first() return url if url else None @classmethod def convert_to_long(cls): """短域名访问后需要转为常常的域名""" code = request.path.strip('/') url = cls.query.filter_by(short_url_code=code).first() if url: long_url = url.long_url if not long_url.startswith('http'): long_url = 'http://' + long_url return long_url else: raise ApiException(msg='not found', code=404, error_code=404)
class User(db.Model): user_id = db.Column(db.Integer, autoincrement=True, primary_key=True) username = db.Column(db.String(64), unique=True, index=True, nullable=False) price = db.Column(db.Numeric(10, 2), default=0.00) status = db.Column(db.Boolean, default=False) image = db.Column(db.String(100)) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) desc = db.Column(db.Text)
class UserLogin(db.Model, UserMixin): uid = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True, nullable=False) password = db.Column(db.String(256), nullable=False) email = db.Column(db.String(64), nullable=False) #如果使用自定义的id需要重写该方法 def get_id(self): return self.uid
class User(db.Model): __tablename__ = 'user' id = db.Column(db.String(10), primary_key=True, autoincrement=True) username = db.Column(db.String(20), unique=True, nullable=False) password = db.Column(db.String(50), nullable=False) inspect_list = db.relationship('inspect_data', backref='user', cascade='all, delete-orphan', passive_deletes=True) record_list = db.relationship('record', backref='user', cascade='all, delete-orphan', passive_deletes=True)
class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(50)) password = db.Column(db.String(100)) phone = db.Column(db.String(20)) email = db.Column(db.String(50)) create_time = db.Column(db.DateTime, default=datetime.now) # 建立表联系 loans = db.relationship('Loan', backref='user') def __str__(self): return self.username
class Area(db.Model): aid = db.Column(db.Integer, primary_key=True) parent_id = db.Column(db.Integer) short_name = db.Column(db.String(64)) name = db.Column(db.String(64)) merger_name = db.Column(db.String(64)) level = db.Column(db.String(64)) pinyin = db.Column(db.String(64)) code = db.Column(db.String(64)) zip_code = db.Column(db.String(64)) first = db.Column(db.String(64)) lng = db.Column(db.String(64)) lat = db.Column(db.String(64))
class Area(db.Model): aid = db.Column(db.Integer, autoincrement=True, primary_key=True) parent_id = db.Column(db.Integer) short_name = db.Column(db.String(64), nullable=False, index=True, unique=True) name = db.Column(db.String(64), nullable=False, index=True, unique=True) merger_name = db.Column(db.String(64), nullable=False) level = db.Column(db.String(64), nullable=False) pinyin = db.Column(db.String(64), nullable=False) code = db.Column(db.String(64), nullable=False) zip_code = db.Column(db.String(64), nullable=False) first = db.Column(db.String(64), nullable=False) lng = db.Column(db.String(64), nullable=False) lat = db.Column(db.String(64), nullable=False) is_host=db.Column(db.Boolean,default=0)
class Area(db.Model): aid = db.Column(db.Integer, primary_key=True, autoincrement=True) parent_id = db.Column(db.Integer) short_name = db.Column(db.String(64)) name = db.Column(db.String(64)) merger_name = db.Column(db.String(64)) level = db.Column(db.String(64)) pinyin = db.Column(db.String(64)) code = db.Column(db.String(64)) zip_code = db.Column(db.String(64)) first = db.Column(db.String(64)) lng = db.Column(db.String(64)) lat = db.Column(db.String(64)) is_hot = db.Column(db.Integer, ) status = db.Column(db.Integer, default=1)