Python 3.6和sqlalchemy 1.2.10
result=db_query(db_session.query(orm_model).filter(orm_model.id==1,orm_model.time.between(1,2)).all())
如果我直接在一个宁静的api中返回此结果:
return [x.to_json() for x in result]
前端内容为空,我发现x .__ dict__只有一个键“ _sa_instance_state”。
“ to_json()”是orm_model的函数:
def to_json(self):
jsonobj = {}
for x in self.__dict__:
jsonobj[x] = self.__dict__[x]
if "_sa_instance_state" in jsonobj.keys():
del jsonobj['_sa_instance_state']
return jsonobj
如果我在退货前打印出来,一切都很好,前端得到了正确的内容。
print(result)
return [x.to_json() for x in result]
如果我删除了“ all()”:
result=db_query(db_session.query(orm_model).filter(orm_model.id==1,orm_model.time.between(1,2)))
一切正常,返回前无需打印,前端得到正确的内容。
模型是:
Base = declarative_base()
class orm_model(Base):
__tablename__ = 'orm_model'
id = Column(INTEGER(11), primary_key=True)
user = Column(INTEGER(11))
...
def to_json(self):
...
def __repr__(self):
return '<orm_model %s>' % self.id
并且我定义db_query总是带有commit和rollback:
def db_query(sql=None):
try:
db_session.commit()
except:
db_session.rollback()
return False
else:
return sql
对不起,我的英语不好。