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))
相關文章
相關標籤/搜索