flask8:数据库对象序列化
程序员文章站
2022-06-02 13:16:28
...
1.在数据对象基类上增加__getitem__ 与 keys 方法,使对象可以通过字典形式序列化
class Base(db.Model):
__abstract__ = True
create_date = Column('create_date', DateTime)
invalid_date = Column('invalid_date', DateTime)
stat = Column(String(10), default='normal')
def __init__(self):
self.create_date = datetime.now()
self.stat = 'normal'
def set_attrs(self, attrs_dict):
for key, value in attrs_dict.items():
if hasattr(self, key) and key != 'id':
setattr(self, key, value)
def delete(self):
self.stat = 'invalid'
self.invalid_date = datetime.now()
# 返回对象对应属性的值
def __getitem__(self, item):
return getattr(self, item)
# 定义返回字典中的键
def keys(self):
return self.fields
def hide(self, *keys):
for key in keys:
self.fields.remove(key)
return self
def append(self, *keys):
for key in keys:
self.fields.append(key)
return self
2.重写JSONEncoder函数,对不能序列化的对象指定***方式
class JSONEncoder(_JSONEncoder):
def default(self, o):
if hasattr(o, 'keys') and hasattr(o, '__getitem__'):
return dict(o)
if isinstance(o, date):
return o.strftime('%Y-%m-%d')
if isinstance(o, datetime):
return o.strftime("%Y-%m-%d %H-%M-%S")
raise ServerError()
3.重写Flask类,挂载新的JSONEncoder函数
class Flask(_Flask):
json_encoder = JSONEncoder
上一篇: thinkphp中怎么查看$this是哪个类的对象
下一篇: Oracle_sql 基础_查询语句
推荐阅读
-
PHP面向对象的使用教程 简单数据库连接
-
在Python中marshal对象序列化的相关知识
-
详解Python 数据库的Connection、Cursor两大对象
-
jQuery序列化form表单数据为JSON对象的实现方法
-
jquery将一个表单序列化为一个对象的方法
-
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
-
完美解决ASP 不能更新。数据库或对象为只读。 原创
-
java 序列化对象 serializable 读写数据的实例
-
序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
-
php面象对象数据库操作类实例