python sqlalchemy查询all()结果。

时间:2018-08-27 02:32:16

标签: python sqlalchemy

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

对不起,我的英语不好。

0 个答案:

没有答案