flask操做

models.py

class CompanyGoodsModel(Base):
    id=Column(Integer, primary_key=True)
    company_id = Column(Integer)
    。。。
    #咱们在model中定义一个to_json方法,来获取模型的数据
    def to_json(self):
        dict = self.__dict__
        if "_sa_instance_state" in dict:
            del dict["_sa_instance_state"]
            return dict
    def get_info_by_id(company_id, category_id):
        if company_id:
            data=CompanyGoodsModel.query.filter(CompanyGoodsModel.company_id == company_id).all()
            return data
        elif category_id:
            data = CompanyGoodsModel.query.filter(CompanyGoodsModel.category_id == category_id).all()
            return data

 

而后在视图层中sql

@api.route('/company_goods', methods=['GET', 'POST'])
def company_goods():
    if request.method == 'GET':
        company_id = request.args.get('company_id', '')
        category_id = request.args.get('category_id', '')
        data=CompanyGoodsModel.get_info_by_id(company_id, category_id)
        result=[]
        for d in data:
            d.goods_info=eval(d['goods_info'])
            result.append(d.to_json())
        if not result:
            return json_response('0001', {}, '数据获取失败 ')
        return json_response('0000', result, '数据获取成功')

 

 Flask更改和加密密码

from werkzeug.security import generate_password_hash, check_password_hash
class CompanyUser(Base):
        if change_db:
        __bind_key__ = 'normal_db'
    else:
        pass
    __tablename__ = 'partner_user'
     _password = Column('password', String(300))

    @property
    def password(self):
        return self._password

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

    def check_password(self, raw):
        return check_password_hash(self._password, raw)

在更改密码的时候,直接将明文存储在该字段上便可json

 

sqlalchemy模糊查询

queryset = CompanyUser.query.filter(or_(CompanyUser.username.like('%{}%'.format(search)),
                                                    CompanyUser.phone_number.like('%{}%'.format(search)))).all()

 

 原生Flask分页

假设 page_index=1,page_size=10;全部分页查询不能够再跟first(),all()等

1.用offset()设置索引偏移量,limit()限制取出


#filter语句后面能够跟order_by语句
db.session.query(User.name).filter(User.email.like('%'+email+'%')).
limit(page_size).offset((page_index-1)*page_size)


2.用slice(偏移量,取出量)函数


#filter语句后面能够跟order_by语句
db.session.query(User.name).filter(User.email.like('%'+email+'%')).slice((page_index - 1) * 
page_size, page_index * page_size)
注释:此方法和第一种相同的效果。
由于:由一下内部方法可知,slice()函数第一个属性就是offset()函数值,第二个属性就是limit()函数值

@_generative(_no_statement_condition)
    def slice(self, start, stop):
        """apply LIMIT/OFFSET to the ``Query`` based on a "
        "range and return the newly resulting ``Query``."""

        if start is not None and stop is not None:
            self._offset = (self._offset or 0) + start
            self._limit = stop - start
        elif start is None and stop is not None:
            self._limit = stop
        elif start is not None and stop is None:
            self._offset = (self._offset or 0) + start

        if self._offset == 0:
            self._offset = None

    @_generative(_no_statement_condition)
    def limit(self, limit):
        """Apply a ``LIMIT`` to the query and return the newly resulting

        ``Query``.

        """
        self._limit = limit

    @_generative(_no_statement_condition)
    def offset(self, offset):
        """Apply an ``OFFSET`` to the query and return the newly resulting
        ``Query``.

        """
        self._offset = offset
3.用paginate(偏移量,取出量)函数,用于BaseQuery


user_obj=User.query.filter(User.email.like('%'+email+'%')).paginate(int(page_index), 
int(page_size),False)
#遍历时要加上items 
object_list =user_obj.items
4.filter中使用limit


#此处不能再跟order_by语句,不然报错
db.session.query(User.name).filter(User.email.like('%'+email+'%') and limit (page_index - 1) * 
page_size, page_size)

 

有关flask的教程博文

https://me.csdn.net/qq_38949193

 字符串时间和时间戳之间的互转

import time, datetime

tssl = '2019-11-9'


def date2timestamp(date):
    timeArray = time.strptime(date, "%Y-%m-%d")
    timeStamp = int(time.mktime(timeArray))
    return timeStamp


def timestamp2date(timestamp):
    timeStamp = 1381419600
    timeArray = time.localtime(timeStamp)
    otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
    return otherStyleTime

print(date2timestamp(tssl))
print(date2timestamp('2019-11-10') - date2timestamp(tssl))

print(timestamp2date(tssl))
相关文章
相关标签/搜索