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, '數據獲取成功')
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
queryset = CompanyUser.query.filter(or_(CompanyUser.username.like('%{}%'.format(search)), CompanyUser.phone_number.like('%{}%'.format(search)))).all()
假設 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)
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))