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 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 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 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): # 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 Travel(db.Model): travel_id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), unique=True, index=True, nullable=False) price = db.Column(db.Numeric(9, 2), default=0.00, nullable=False) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) is_delete = db.Column(db.Boolean, default=0) images = db.relationship('Image', backref='travel', lazy='dynamic')
class User(db.Model): uid = db.Column(db.Integer, autoincrement=True, primary_key=True) username = db.Column(db.String(100), unique=True, index=True, nullable=False) image = db.relationship('Image', back_populates='user', uselist=False)
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 Role(db.Model): role_id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), index=True, unique=True) desc = db.Column(db.Text) permission = db.relationship('Permission', secondary=relation) def __init__(self, role_name, desc): self.role_name = role_name self.desc = desc
class User(db.Model): uid = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(100), unique=True, nullable=False) addrs = db.relationship( 'Address', lazy='dynamic', backref='user', uselist=True, )
class Movie(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) show_name = db.Column(db.String(64)) show_name_en = db.Column(db.String(64)) director = db.Column(db.String(32)) leading_role = db.Column(db.String(255)) type = db.Column(db.String(64)) country = db.Column(db.String(32)) language = db.Column(db.String(32)) duration = db.Column(db.Integer) screening_model = db.Column(db.String(16)) open_day = db.Column(db.Date) image = db.Column(db.String(255)) flag = db.Column(db.Integer) is_delete = db.Column(db.Integer, default=False) hs_list = db.relationship('HallScheduling', lazy='dynamic', backref='movie') rating = db.relationship('Rating', lazy='dynamic', backref='movie')
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 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 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 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 Destination(db.Model): des_id = db.Column(db.Integer, primary_key=True, autoincrement=True) des_name = db.Column(db.String(100), unique=True, index=True, nullable=False) price = db.Column(db.Numeric(9, 2), default=0.00, nullable=False) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) is_delete = db.Column(db.Boolean, default=0) photo_list = db.relationship('Photo', backref='destination', lazy='dynamic' )
class Cinema(db.Model): cid = db.Column(db.Integer, autoincrement=True, primary_key=True) name = db.Column(db.String(64), nullable=False, index=True, unique=True) city = db.Column(db.String(64), nullable=False) district = db.Column(db.String(64), nullable=False) address = db.Column(db.String(255), nullable=False) phone = db.Column(db.String(16), nullable=False) score = db.Column(db.Float(3, 1)) hall_num = db.Column(db.Integer, nullable=False) # 服务费 service_money = db.Column(db.Numeric(3, 1)) # 限购数量 astrict = db.Column(db.Integer) # 电影院状态 True营业 False不营业 flag = db.Column(db.Integer, default=1) 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 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 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 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 Category(db.Model): # 主键 cate_id = db.Column(db.Integer, autoincrement=True, primary_key=True) name = db.Column(db.String(30), unique=True, index=True, nullable=False) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) status = db.Column(db.Boolean, default=True) # userlist=True表示一对多 默认为True # userlist=False表示一对一 ''' lazy select 表示一次性将所有的数据全部加载进内存 dynamic 延迟加载(懒加载),先加载主表的数据,当我们去使用主表相关的数据的时候才去执行查询 当数据比较多的时候建议使用dynamic ''' subs = db.relationship('SubCategory', lazy='dynamic', backref='category')
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 Film(db.Model): __tablename__ = 't_film' id = db.Column(db.String(255), primary_key=True) actor = db.Column(db.String(255)) # 演员 cata_log_name = db.Column(db.String(255)) # 类型:电影 cata_log_id = db.Column(db.String(255)) # 类型id evaluation = db.Column(db.String(255)) # image = db.Column(db.String(255)) # 图片地址,相对路径 is_use = db.Column(db.Integer) # 是否可用? loc_name = db.Column(db.String(255)) # 国籍:美国 loc_id = db.Column(db.String(255)) # 国籍id name = db.Column(db.String(255)) # 电影名 on_decade = db.Column(db.String(255)) # 上映时间 plot = db.Column(db.Text) # 介绍 resolution = db.Column(db.String(255)) # 清晰度 status = db.Column(db.String(255)) # 状态:全集? sub_class_name = db.Column(db.String(255)) # 类型1 喜剧片 sub_class_id = db.Column(db.String(255)) # 类型id type_name = db.Column(db.String(255)) # 类型2: 奇幻片 type_id = db.Column(db.String(255)) # 类型id update_time = db.Column(db.String(255)) # 更新时间 is_vip = db.Column(db.Integer) # 是否vip raties = db.relationship('Raty', backref='film') reses = db.relationship('Res', backref='film')
class User(db.Model): # name 表示列名 # 修改表名 # __tablename__ = '' user_id = 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(64), nullable=False) age = db.Column(db.Integer) create_date = db.Column(db.DateTime, default=datetime.datetime.now()) is_delete = db.Column(db.Boolean, default=False) # wight = db.Column(db.Float(2)) price = db.Column(db.Numeric(7, 2), nullable=False) addresses = db.relationship('Address', backref='user')
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 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 Cate(db.Model): cid = db.Column(db.Integer, primary_key=True) cname = db.Column(db.String(64), index=True, unique=True) #建立关联关系的对象,懒加载 ''' 参数一 argument 关联对象的类名 参数二 lazy 可选项: 1.select 默认值 一条sql语句把所有的相关的数据全部查出来 2.dynamic 只查询主表的数据,生成查询子表的sql语句,需要子表的数据时再去查询 3.immediate 等主表数据查询完成之后再去查询子表的数据 参数 可选项 uselist=None, 建立一对一关系 uselist = False order_by=False, 排序时候使用order_by = [UserShop.sid] backref=None,反向引用(当两个对象需要双向引用时候使用) back_populates=None, ''' shops = db.relationship('UserShop', back_populates='cate', lazy='dynamic')
class Category(db.Model): cate_id = db.Column(db.Integer, autoincrement=True, primary_key=True) name = db.Column(db.String(30), unique=True, index=True, nullable=False) create_date = db.Column(db.DateTime, default=datetime.now()) status = db.Column(db.Boolean, default=1) # uselist 如果设置为False 表示一对一 # 默认为 True ''' lazy 参数部分可选值 'select' 表示一次性将所有的数据加载进所有的内存 'dynamic' 延迟加载 先加载主表的数据,当我们使用子表相关数据才去执行查询操作 ''' subs = db.relationship('SubCategory', uselist=True, lazy='dynamic', backref='category')
class Teachers(db.Model): STATUS = { '离职': 0, '在职': 1, '在假': 2, } SUBJECT = { '语文': 1, '数学': 2, '体育': 3, '英语': 4, } tid = 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, unique=True, nullable=False) head_img = db.Column(db.String(64)) # 学科 subject = db.Column(db.Integer) # 是否删除 is_status = db.Column(db.Integer, nullable=False) classes = db.relationship('Classes', backref='teachers')
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')