예제 #1
0
class Teacher(db.Model):
    __tablename__ = 'teachers'
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    teacher_name = db.Column(db.String(32))

    def __repr__(self):
        return self.teacher_name
예제 #2
0
class Coffees(db.Model):
    # 表名
    __tablename__ = 'coffees'
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    # 咖啡名
    coffee_name = db.Column(db.String(64), nullable=False)
    # 图片
    coffee_img = db.Column(db.String(128), nullable=False)
예제 #3
0
class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer(), primary_key=True)
    # 书名
    title = db.Column(db.String(32), nullable=False)

    # 双向关系
    tag = db.relationship('Tag', secondary=article_tag, backref='article')
예제 #4
0
파일: models.py 프로젝트: zhousilin/bj1910
class User(db.Model):
    id = db.Column(db.Integer,
                   primary_key=True,
                   autoincrement=True,
                   name='uid')
    username = db.Column(db.String(60))

    __tablename__ = 'bbs_user'
예제 #5
0
class Users(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    # 用户名
    username = db.Column(db.String(32), unique=True)
    # 密码
    password = db.Column(db.String(128), nullable=False)
    # 头像 保存图片名 或图片路径
    avatar = db.Column(db.String(128), nullable=True)
예제 #6
0
class Posts(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.Text)
    title = db.Column(db.String(50), default='电影名称')
    pid = db.Column(db.Integer, default=0)
    image = db.Column(db.String(255), default='defaultImage,')
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))
    characters = db.Column(db.String(255), default='暂无详细演员信息')  #演员名称
    director = db.Column(db.String(255), default="暂无详细导演信息")
    selfread = db.Column(db.Text, default="暂无作者观后感")
예제 #7
0
class Message(DB_base, db.Model):
    __tablename__ = 'message'
    id = db.Column(db.Integer, primary_key=True)
    fid = db.Column(db.Integer)  # 文件id
    uid = db.Column(db.Integer)  # 作者id
    eid = db.Column(db.Integer)  # 审稿者id
    name = db.Column(db.String(12), index=True)  # 评论者用户名
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)  # 发送消息的时间
    state = db.Column(db.Enum('未回复', '已回复', '收到'), default='未回复')  # 消息回复状态
    title = db.Column(db.String(20), index=True)  # 稿件标题
    content = db.Column(db.String(256))  # 回复的内容
    expert = db.Column(db.Boolean, default=False)  # 是否为专家发言
예제 #8
0
class Posts(db.Model, Base):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(23), index=True)
    article = db.Column(db.Text)
    pid = db.Column(db.Integer, default=0)
    path = db.Column(db.Text, default='0,')
    fabulous = db.Column(db.Integer, default=0)
    times = db.Column(db.Integer, default=0)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow())
    scan = db.Column(db.Integer, default=0)
    #外键,与user表主键id关联,进行关联查询
    #表迁移后 表中会有一个uid字段 一对多 一个用户发表多个帖子
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))
예제 #9
0
class Corp_score(db.Model):
    __table_args__ = {'schema': config_map['postgresql']['schema']}
    code = db.Column(db.String(255), primary_key=True)
    score = db.Column(db.String(2048))

    def save(self):
        db.session.add(self)
        db.session.commit()

    def to_json(self):
        dict = self.__dict__
        if "_sa_instance_state" in dict:
            del dict["_sa_instance_state"]
        return dict
예제 #10
0
파일: posts.py 프로젝트: yuxuemin247/note
class Posts(DB_Base, db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(20), index=True)  # 博客标题
    article = db.Column(db.Text)  # 博客的内容
    pid = db.Column(db.Integer, default=0)  # 父id
    path = db.Column(db.Text, default='0,')  # 路径
    visit = db.Column(db.Integer, default=0)  # 访问量
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)  # 发表时间
    # 设置一对多外键
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))  # 设置外键 关联主表user的自增id
    state = db.Column(db.Integer, default=0)  # 是否所有人可见
예제 #11
0
파일: posts.py 프로젝트: Darricklin/blog
class Posts(Base, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(23), index=True)
    article = db.Column(db.Text)
    pid = db.Column(db.Integer, default=0)
    path = db.Column(db.Text, default='0,')
    fabulous = db.Column(db.Integer, default=0)
    times = db.Column(db.Integer, default=0)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    #使用ForeignKey 来创建表的外键 作用是 和数据库中的user表(用户信息表)进行关联查询 表迁移以后 表中救会有一个 uid的字段  一对多 关系 一个用户 发表多个帖子 多的表使用ForeignKey 来关联1的一方
    #uid是模型Posts下的posts表单中的外键,关联的是User模型下的user表单中的id值,通过id值就可以找到对应的用户名,知道文章或评论是谁发的。
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))
예제 #12
0
class Superuser(UserMixin, db.Model):
    __table__name = 'superuser'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(12), index=True)
    password_hash = db.Column(db.String(128))
    '''
    参数1模型名称。参数2 反响引用字段名称,参数3,加载方式,提供对象
    '''
    # users =db.relationship('User',backref='stu111', lazy=True)
    # users = db.relationship('User',backref='superuser',lazy='dynamic')
    # uid = db.relationship('User',secondary='superanduser',backref=db.backref('superuser',lazy='dynamic'),lazy='dynamic')

    users = db.relationship('User', backref='superuser', lazy='dynamic')
    icon = db.Column(db.String(70), default='admin.jpg')

    #生成token的方法

    def generate_token(self):
        s = Seralize(current_app.config['SECRET_KEY'])
        return s.dumps({'id': self.id})

    @staticmethod
    def check_token(token):
        s = Seralize(current_app.config['SECRET_KEY'])
        #从当前token中拿出字典
        try:
            id = s.loads(token)['id']
        except:
            return False
        s = Superuser.query.get(id)
        if not s:
            return False

    def check_password_hash(self, password):
        return check_password_hash(self.password_hash, password)

    #定义一个删除电影的方法
    def remove_posts(self, pid):
        post = Posts.query.get(id=pid)
        if not post:
            return False
        #如果存在该电影信息
        #1.判断是否有user收藏该电影,将该post剔除收藏的posts
        # User.query.filter_by()
        # Users=User.query.filter(favorite.id=pid)
        # for i in users:
        db.session.delete(post)
        db.session.commit()
예제 #13
0
class Email(db.Model):
    __tablename__ = 'emails'
    id = db.Column(db.Integer(), primary_key=True)
    email = db.Column(db.String(64))

    # 一对多
    # 声明外键 一般放在多的一方
    # db.ForeignKey(表名.主键)
    t_id = db.Column(db.Integer, db.ForeignKey('teachers.id'))

    # Teacher.mail << ==== >>Email.teacher 双向关系
    # 反向查询
    teacher = db.relationship('Teacher', backref='mail')

    def __repr__(self):
        return self.email
예제 #14
0
파일: user.py 프로젝트: zhengjiageng/blog-
class User(UserMixin, Base, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(10), unique=True, index=True)
    password_hash = db.Column(db.String(128))
    sex = db.Column(db.Boolean, default=True)
    age = db.Column(db.Integer, default=20)
    email = db.Column(db.String(50))
    icon = db.Column(db.String(40), default='default.jpg')
    confirm = db.Column(db.Boolean, default=False)  #当前用户是否激活
    """
    参数1  引用关系的模型
    参数2  backref  反向引用的字段  给posts模型 添加了一个user属性 这个属性是替代uid 来进行对象的查询的 uid这个字段用不上
    参数3  加载数据条目(如何加载)
        dynamic  返回query对象  也就是你所看到的sql语句
        默认是select....  返回 一个列表 装有所有帖子对象的列表
            不用的原因:不能呢个通过过滤器 再次筛选或者其它操作
    """
    # posts = db.relationship('Posts',backref='user',lazy='dynamic')
    posts = db.relationship('Posts', backref='user', lazy='dynamic')

    @property
    def password(self):
        raise AttributeError('密码不可读')

    #将明文密码 变成hash加密在赋给 字段属性 password_hash
    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    #验证用户密码
    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    # 生成token    通过邮件发送token值 进行账户的激活
    def generate_token(self):
        s = Seralize(current_app.config['SECRET_KEY'])
        return s.dumps({'id': self.id})

    #检测token值是否正确
    @staticmethod
    def check_token(token):
        s = Seralize(current_app.config['SECRET_KEY'])
        try:
            Dict = s.loads(token)  #加载出token的字典
            id = Dict['id']  #拿到用户的id
            u = User.query.get(id)  #查询id的对象是否存在 在则为 <user n> 否则为None
            if not u:
                raise ValueError
            #以上的代码只有出现问题 则都执行except
        except:
            return False
        #判断账户是否没有激活  没有则激活 激活了则返回True
        if not u.confirm:
            u.confirm = True
            u.save()

        return True
예제 #15
0
파일: posts.py 프로젝트: caoluyang8/blog
class Posts(Base,db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer,primary_key=True)
    title = db.Column(db.String(20)) #标题
    content = db.Column(db.Text) #博客内容
    pid = db.Column(db.Integer,default=0) #pid为0则为博客 否则为评论和回复
    path = db.Column(db.Text,default='0,') #路径path
    visit = db.Column(db.Integer,default=0) #访问量
    timestamp = db.Column(db.DateTime,default=datetime.utcnow) #发表的时间
    state = db.Column(db.Boolean,default=True) #默认所有人可见
    uid = db.Column(db.Integer,db.ForeignKey('user.id'))
    def __str__(self):
        return self.title
예제 #16
0
class Posts(DB_Base, db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(20), index=True)  # 标题
    article = db.Column(db.Text)  # md格式正文
    pid = db.Column(db.Integer, default=0)  # 父id
    path = db.Column(db.Text, default='0,')  # 路径
    visit = db.Column(db.Integer, default=0)  # 文章访问量
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)  # 发表时间
    state = db.Column(db.Integer, default=0)  # 是否所有人可见
    img = db.Column(db.String(70))  # 图片

    tags = db.relationship('Categorys',
                           secondary=posts_categorys,
                           backref=db.backref('posts'))

    u_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 关联主表user的自增id
예제 #17
0
파일: models.py 프로젝트: zhousilin/bj1910
class Category(db.Model):
    cid = db.Column(db.Integer, primary_key=True, autoincrement=True)
    classname = db.Column(db.String(60), nullable=False)
    parentid = db.Column(db.Integer, default=0)
    replycount = db.Column(db.Integer)
    compere = db.Column(db.String(200))
    forumcount = db.Column(db.Integer)
    classpic = db.Column(db.String(300))
    description = db.Column(db.String(3000), name='descrition')
    lastpost = db.Column(db.String(3000))
    __tablename__ = 'bbs_category'

    def __str__(self):
        return f"{self.classname}"
예제 #18
0
파일: user.py 프로젝트: Darricklin/blog
class User(UserMixin,Base,db.Model):
    id=db.Column(db.Integer,primary_key=True)
    username=db.Column(db.String(12),unique=True,index=True)
    userpass_hash=db.Column(db.String(128))
    sex=db.Column(db.Boolean,default=True)
    birth = db.Column(db.String(20))
    email=db.Column(db.String(50))
    icon = db.Column(db.String(40), default='default.jpg')
    confirm=db.Column(db.Boolean,default=False)
    #给User模型设置一个外键接口,对接Posts模型与User模型下的user表,采用带参数(dynamic)的方式对接。
    posts=db.relationship('Posts',backref='user',lazy='dynamic')
    #用property和setter的方法将方法变成像属性一样可以被调用,方便对其进行赋值,比较,判断等。
    @property
    #将password变成属性,当调用User.password时,抛出错误,让密码不可读。
    def password(self):
        raise AttributeError('密码不可读')
    @password.setter
    #给password属性设置方法,将用户输入的密码进行hash加密。
    def password(self,userpass):
        self.userpass_hash=generate_password_hash(userpass)
    #定义检查密码的方法
    def check_password(self,password):
        return check_password_hash(self.userpass_hash,password)
    #定义生成token的方法
    def generate_token(self):
        #用字符串作为参数将Seralize实例化,
        s = Seralize(current_app.config['SECRET_KEY'])
        #调用dumps方法以数据id为令牌,生成加密字符串;token为json类型.
        return s.dumps({'id':self.id})
    @staticmethod
    def check_token(token):
        #用同样的字符串生成构造token时完全一样的实例化对象。
        s=Seralize(current_app.config['SECRET_KEY'])
        #在能得到token的情况下try
        try:
            #用实例化对象解析邮箱传递给路由的token。得到Dict。
            Dict=s.loads(token)
            #取出Dict的id。
            id=Dict['id']
            #查找数据库中是否存在这个id,如果存在,u为True,否则为Flase。
            u=User.query.get(id)
            if not u:
                #如果不存在,抛出错误,不再执行后续代码。
                raise ValueError
        #得不到token就except
        except:
            #得不到token就返回错误
            return False
        #得到了token,并且解析到数据库中有对应的id。并且激活状态为Flase时,执行下列代码。
        if not u.confirm:
            #更改激活状态并保存
            u.confirm = True
            u.save()
        #随便返回一个真值,让其他情况下代码正常运行。
        return True
예제 #19
0
파일: user.py 프로젝트: zhaolianzi8888/blog
class User(UserMixin, Base, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(12), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    sex = db.Column(db.Boolean, default=True)
    age = db.Column(db.Integer, default=18)
    email = db.Column(db.String(50), unique=True)  #邮箱
    icon = db.Column(db.String(70), default='default.jpg')  #头像
    lastLogin = db.Column(db.DateTime)  #上次登录时间
    registerTime = db.Column(db.DateTime, default=datetime.utcnow)  #注册时间
    confirm = db.Column(db.Boolean, default=False)  #激活状态 默认不激活

    @property
    def password(self):
        raise AttributeError

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    #检测密码正确性
    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    #token值的生成
    def generate_token(self):
        s = Seralize(current_app.config['SECRET_KEY'])  #生成token对象
        return s.dumps({'id': self.id})  #通过给定字典生成token字符串

    #账户的激活
    @staticmethod
    def check_token(token):
        try:
            s = Seralize(current_app.config['SECRET_KEY'])  # 生成token对象
            id = int(s.loads(token)['id'])  #通过token值加载出字典
            u = User.query.get(id)  #拿到访问者的对象
            u.confirm = True  #修改激活状态
            u.save()  #保存
            return True
        except:
            return False

    def __str__(self):
        return self.username
예제 #20
0
파일: user.py 프로젝트: zaiwang/blog
class User(UserMixin, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(12), index=True)
    password_hash = db.Column(db.String(128))
    sex = db.Column(db.Boolean, default=True)
    age = db.Column(db.Integer)
    email = db.Column(db.String(40))
    icon = db.Column(db.String(70), default='default.jpg')
    #当期账户激活状态
    confirm = db.Column(db.Boolean, default=False)

    @property
    def password(self):
        raise ValueError

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    #生成token的方法
    def generate_token(self):
        s = Seralize(current_app.config['SECRET_KEY'])
        return s.dumps({'id': self.id})

    #检测token的方法
    @staticmethod
    def check_token(token):
        s = Seralize(current_app.config['SECRET_KEY'])
        # print(s)
        #从当前的token中拿出字典
        try:
            id = s.loads(token)['id']
        except:
            return False

        u = User.query.get(id)

        if not u:
            return False
        if not u.confirm:
            print(u.confirm)
            u.confirm = True
            print(u.confirm)
            db.session.add(u)
        return True

    #验证密码
    def check_password_hash(self, password):
        return check_password_hash(self.password_hash, password)
예제 #21
0
class Students(db.Model):
    # 表名
    # 默认情况
    # 类名 大写变小写,第二个大写字母前面加下划线 students
    # StudentModel student_model

    __tablename__ = 'students'

    # 主键 如果设置为主键 ,就默认自动增长
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    # 学生名
    stu_name = db.Column(db.String(32), nullable=False)
    # 学号
    stu_num = db.Column(db.String(8), nullable=False)
    # 性别
    stu_sex = db.Column(db.Boolean, default=True)
    # 年龄
    stu_age = db.Column(db.SmallInteger, default=18)
    # 爱好
    hobby = db.Column(db.String(64))

    # print 输出
    # def __str__(self):
    #     return self.stu_name
    def __repr__(self):
        return self.stu_name
예제 #22
0
class Course(db.Model, Base):
    __tablename__ = 'course'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(23), index=True)
    abstract = db.Column(db.Text)
    pid = db.Column(db.Integer, default=0)
    path = db.Column(db.Text, default='0,')
    timestamp = db.Column(db.DateTime, default=datetime.utcnow())
예제 #23
0
파일: user.py 프로젝트: caoluyang8/movie
class User(UserMixin, Base, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(12),
                         index=True,
                         nullable=False,
                         unique=True)
    password_hash = db.Column(db.String(128))
    email = db.Column(db.String(50), unique=True)
    icon = db.Column(db.String(70), default='default.jpg')
    lastLogin = db.Column(db.DateTime)
    registerTime = db.Column(db.DateTime, default=datetime.utcnow)
    confirm = db.Column(db.Boolean, default=True)

    favorites = db.relationship('Movie',
                                secondary='collections',
                                backref=db.backref('users', lazy='dynamic'),
                                lazy='dynamic')

    @property
    def password(self):
        raise AttributeError

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def is_favorite(self, pid):
        favorites = self.favorites.all()
        for i in favorites:
            if i.id == pid:
                return True
        return False

    def add_favorite(self, pid):
        self.favorites.append(Movie.query.get(pid))
        db.session.commit()

    def remove_favorite(self, pid):
        self.favorites.remove(Movie.query.get(pid))
        db.session.commit()

    def __str__(self):
        return self.username
예제 #24
0
class Posts(db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.Text)
    pid = db.Column(db.Integer, default=0)
    path = db.Column(db.String(255), default='0,')
    #记录时间的
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    #user的外键
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))
예제 #25
0
class User(UserMixin, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(13), unique=True)
    password_hash = db.Column(db.String(128))
    age = db.Column(db.Integer, default=18)
    sex = db.Column(db.Boolean, default=True)
    email = db.Column(db.String(128))
    icon = db.Column(db.String(64), default='default.jpg')
    confirm = db.Column(db.Boolean, default=False)

    @property
    def password(self):
        raise ArithmeticError('属性不存在')

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def generate_token(self):
        s = Seralize(current_app.config['SECRET_KEY'])
        return s.dumps({'id': self.id})

    @staticmethod
    def check_token(token):
        try:
            s = Seralize(current_app.config['SECRET_KEY'])
            Dict = s.loads(token)
            uid = Dict['id']
            u = User.query.get(uid)
            if not u:
                raise ValueError
        except:
            return False
        if not u.confirm:
            u.confirm = True
            db.session.add(u)

        return True

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)
예제 #26
0
from .user import User
from .posts import Posts
from App.extensions import db

# 创建多对多中间表 存储多对多的id
collections = db.Table(
    'collections',
    db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('posts_id', db.Integer, db.ForeignKey('posts.id')),
)
예제 #27
0
class Categorys(DB_Base, db.Model):
    __tablename__ = 'categorys'
    id = db.Column(db.Integer, primary_key=True)
    categorys = db.Column(db.String(20), index=True, unique=True)
예제 #28
0
from App.extensions import db
from .db_base import DB_Base
from datetime import datetime

posts_categorys = db.Table(
    'posts_categorys',
    db.Column('posts_id',
              db.Integer,
              db.ForeignKey('posts.id'),
              primary_key=True),
    db.Column('categorys_id',
              db.Integer,
              db.ForeignKey('categorys.id'),
              primary_key=True))


# 博客模型
class Posts(DB_Base, db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(20), index=True)  # 标题
    article = db.Column(db.Text)  # md格式正文
    pid = db.Column(db.Integer, default=0)  # 父id
    path = db.Column(db.Text, default='0,')  # 路径
    visit = db.Column(db.Integer, default=0)  # 文章访问量
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)  # 发表时间
    state = db.Column(db.Integer, default=0)  # 是否所有人可见
    img = db.Column(db.String(70))  # 图片

    tags = db.relationship('Categorys',
                           secondary=posts_categorys,
예제 #29
0
class ResourceMixin(object):
    # Keep track when records are created and updated.
    created_on = db.Column(AwareDateTime(), default=tzware_datetime)
    updated_on = db.Column(AwareDateTime(),
                           default=tzware_datetime,
                           onupdate=tzware_datetime)

    @classmethod
    def sort_by(cls, field, direction):
        """
        Validate the sort field and direction.

        :param field: Field name
        :type field: str
        :param direction: Direction
        :type direction: str
        :return: tuple
        """
        if field not in cls.__table__.columns:
            field = 'created_on'

        if direction not in ('asc', 'desc'):
            direction = 'asc'

        return field, direction

    @classmethod
    def get_bulk_action_ids(cls, scope, ids, omit_ids=[], query=''):
        """
        Determine which IDs are to be modified.

        :param scope: Affect all or only a subset of items
        :type scope: str
        :param ids: List of ids to be modified
        :type ids: list
        :param omit_ids: Remove 1 or more IDs from the list
        :type omit_ids: list
        :param query: Search query (if applicable)
        :type query: str
        :return: list
        """
        omit_ids = map(str, omit_ids)

        if scope == 'all_search_results':
            # Change the scope to go from selected ids to all search results.
            ids = cls.query.with_entities(cls.id).filter(cls.search(query))

            # SQLAlchemy returns back a list of tuples, we want a list of strs.
            ids = [str(item[0]) for item in ids]

        # Remove 1 or more items from the list, this could be useful in spots
        # where you may want to protect the current user from deleting themself
        # when bulk deleting user accounts.
        if omit_ids:
            ids = [id for id in ids if id not in omit_ids]

        return ids

    @classmethod
    def bulk_delete(cls, ids):
        """
        Delete 1 or more model instances.

        :param ids: List of ids to be deleted
        :type ids: list
        :return: Number of deleted instances
        """
        delete_count = cls.query.filter(
            cls.id.in_(ids)).delete(synchronize_session=False)
        db.session.commit()

        return delete_count

    def save(self):
        """
        Save a model instance.

        :return: Model instance
        """
        db.session.add(self)
        db.session.commit()

        return self

    def delete(self):
        """
        Delete a model instance.

        :return: db.session.commit()'s result
        """
        db.session.delete(self)
        return db.session.commit()

    def __str__(self):
        """
        Create a human readable version of a class instance.

        :return: self
        """
        obj_id = hex(id(self))
        columns = self.__table__.c.keys()

        values = ', '.join("%s=%r" % (n, getattr(self, n)) for n in columns)
        return '<%s %s(%s)>' % (obj_id, self.__class__.__name__, values)
예제 #30
0
class EconomicNews(db.Model):
    __table_args__ = {
        'schema': config_map['postgresql']['schema']
    }
    id=db.Column(db.Integer,primary_key=True)
    title=db.Column(db.String(256))
    content=db.Column(db.Text)
    link=db.Column(db.String(2048))
    publish_date=db.Column(db.DateTime)
    type=db.Column(db.String(256))
    keywords=db.Column(db.String(2048))
    create_date=db.Column(db.DateTime)
    create_by=db.Column(db.Integer)
    update_date = db.Column(db.DateTime)
    update_by = db.Column(db.DateTime)

    def save(self):
        db.session.add(self)
        db.session.commit()

    def to_json(self):
        dict = self.__dict__
        if "_sa_instance_state" in dict:
            del dict["_sa_instance_state"]
        return dict