pythonmysql查询转list_python 数据库查询结果转对象
#coding:utf-8
from json importdumps, loads, JSONEncoder, JSONDecoderimportpicklefrom app.model.Jsonable importJsonablefrom sqlalchemy.ext.declarative importDeclarativeMetaimportjirafrom jira.resources importUserimportdatetimeimportjson#python對象編碼為json對象統一方法,用法為 json.dumps(project, cls=PythonObjectEncoder)
classPythonObjectEncoder(JSONEncoder):defdefault(self, obj):ifisinstance(obj, (list, dict, str, int, float, bool, type(None), Jsonable, jira.resources.Resource)):
fields={}for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']:
data= obj.__getattribute__(field)try:#this will fail on non-encodable values, like other classes
dumps(data)
fields[field]=dataexceptTypeError:
fields[field]=None#a json-encodable dict
returnfieldsreturnJSONEncoder.default(self, obj)classAlchemyEncoder(json.JSONEncoder):defdefault(self, obj):if isinstance(obj.__class__, DeclarativeMeta):#an SQLAlchemy class
fields ={}#for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata' and not hasattr(obj.__class__.__bases__,x)]:
for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata' and x != 'query' and x != 'query_class']:
data= obj.__getattribute__(field)try:#this will fail on non-encodable values, like other classes
json.dumps(data)
fields[field]=dataexcept TypeError: #添加了對datetime的處理
ifisinstance(data, datetime.datetime):#fields[field] = data.isoformat()
fields[field] = data.strftime('%Y-%m-%d %H:%M:%S')elifisinstance(data, datetime.date):#fields[field] = data.isoformat()
fields[field] = data.strftime('%Y-%m-%d')elifisinstance(data, datetime.timedelta):
fields[field]=(
datetime.datetime.min+data).time().isoformat()#elif isinstance(data.__class__, DeclarativeMeta):
#json.dumps(data,cls=AlchemyEncoder)
#pass
else:
fields[field]=None#a json-encodable dict
returnfieldsreturnjson.JSONEncoder.default(self, obj)classDateTimeEncoder(json.JSONEncoder):defdefault(self, obj):ifisinstance(obj, datetime.datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')elifisinstance(obj, datetime.date):return obj.strftime('%Y-%m-%d')elif isinstance(obj.__class__, DeclarativeMeta):return dumps(obj,cls=AlchemyEncoder)else:returnjson.JSONEncoder.default(self, obj)classModelToJsonObject(object):defto_json(self,obj):if isinstance(obj.__class__, DeclarativeMeta):returnjson.loads(json.dumps(obj,AlchemyEncoder))else:return json.loads
總結
以上是生活随笔為你收集整理的pythonmysql查询转list_python 数据库查询结果转对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flink开发案例_为什么说 Flink
- 下一篇: blob字段乱码怎么处理_下载的附件名总