SQL alchemy 的查询结果如何转为json格式?
时间: 2023-02-06 20:25:01 浏览: 48
可以使用 Python 的内置 json 库来将查询结果转换为 json 格式。首先,需要使用 SQLAlchemy 的 to_dict() 方法将查询结果转换为字典。然后,可以使用 json.dumps() 方法将字典转换为 json 格式的字符串。
例如:
```
import json
from sqlalchemy.ext.declarative import DeclarativeMeta
# 这是一个自定义的转换方法,用于将 SQLAlchemy 的对象序列化为字典
def alchemy_encoder(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']:
data = obj.__getattribute__(field)
try:
json.dumps(data) # this will fail on non-encodable values, like other classes
fields[field] = data
except TypeError:
fields[field] = None
# a json-encodable dict
return fields
return obj
# 在这里使用 SQLAlchemy 查询数据库
result = session.query(MyModel).all()
# 将查询结果转换为 json 格式
json_data = json.dumps(result, default=alchemy_encoder)
```
在上面的代码中,我们使用自定义的 alchemy_encoder() 函数将 SQLAlchemy 的对象序列化为字典,然后使用 json.dumps() 将字典转换为 json 格式的字符串。
注意:这种方法只适用于转换单个对象或对象列表,如果要转换复杂的查询结果,则需要自定义序列化函数来处理。