目前Flask-sqlalchemy查询出来的值 一般是对象或者数组包着对象,如果想转json还很麻烦,目前有一种方法。
在Models里添加to_json()方法:
class Test(db.Model):
__tablename__ = 'test'
id = db.Column(db.INT, primary_key=True)
a1 = db.Column(db.String(40), unique=False,nullable=False)
a2 = db.Column(db.String(200), unique=False,nullable=False)
a3 = db.Column(db.DECIMAL(16,2), unique=False, nullable=False, default=0)
a4 = db.Column(db.DECIMAL(16,2), unique=False, nullable=False, default=0)
a5 = db.Column(db.DECIMAL(16,2), unique=False, nullable=False, default=0)
def __init__(self, a1, a2):
self.a1 = a1
self.a2 = a2
def to_json(self):
json_data = {
'id': self.id,
'a1': self.a1,
'a2': self.a2,
'a3': self.a3,
'a4': self.a4,
'a5': self.a5
}
return json.dumps(json_data,cls=DateEncoder)
def __repr__(self):
return '<Test %r>' % self.id
如果有类型问题还需要类型转换的类DateEncoder:
class DateEncoder(json.JSONEncoder):
def default(self,obj):
if isinstance(obj, datetime.datetime):
return obj.strftime(DATETIME)
elif isinstance(obj,datetime.date):
return obj.strftime(DATE)
elif isinstance(obj,Decimal):
return str(obj)
else:
return json.JSONEncoder.default(self,obj)
调用:
data = Test.query.first()
return data.to_json()