javapythonmysqlsqlalchemytornado

How to return a list contains Object in sqlalchemy in python, is similar to List<OrderInfo> in java


i want to get a list which contains entire OrderInfo Object, for example, if i do this, it is result which the result i want to.

def find_all(self):
    result_list = []
    orderDao = DaoUtil.DaoGeneric()
    session = orderDao.getSession()
    try:
        for row in session.query(OrderInfo).all():
            result_list.append({
                'id':row.id,
                'name': row.name,
                'age': row.age,
                 'create_time': row.create_time.strftime("%Y-%m-%d %H:%M:%S"),
                 'update_time': row.update_time.strftime("%Y-%m-%d %H:%M:%S"),
                    'version': row.version
                })
            session.commit()
    except Exception, e:
         print e
         session.rollback()
    return  result_list

but i want to a list which contains OrderInfo object from the query, because the result which the query return have other columns (the simple list of all DeclarativeBase's instances.) except OrderInfo{id,name,age,create_time,update_time,version}, the query do not return OrderInfo object directly. the following which i want to:

def find_all(self):
    result_list = []
    orderDao = DaoUtil.DaoGeneric()
    session = orderDao.getSession()
        try:
            for row in session.query(OrderInfo).all():
                result_list.append(row.orderInfo) // if the row has a property for orderInfo Object, because the result which java can achieve , the example  for java is :   List<OrderInfo> orderList = session.query(); please help to achieve it


            session.commit()
    except Exception, e:
        print e
        session.rollback()
    return  result_list

beacause i use sqlalchemy in python just now, i am not very sure. How to get a list which contains OrderInfo Object from query in sqlalchemy


Solution

  • i find the answer which i want to get:

       def find_all(self):
            result_list = []
            orderDao = DaoUtil.DaoGeneric()
            session = orderDao.getSession()
            try:
                for row in session.query(OrderInfo).all():
                    result_list.append(DictUtil.object_as_dict(row))
                session.commit()
            except Exception, e:
                print e
                session.rollback()
            return result_list
    
    
    def object_as_dict(obj):
        result = {instance.key: getattr(obj, instance.key)  for instance in inspect(obj).mapper.column_attrs}
        print result
        return result
    

    output :

    [
    {'updateTime': datetime.datetime(2017, 6, 15, 13, 56, 16), 'bankName': u'ICBC', 'bankNo': u'6228480666622220011', 'createTime': datetime.datetime(2017, 6, 15, 13, 56, 16), u'version': 0, u'id': 1}, 
    {'updateTime': datetime.datetime(2017, 6, 15, 13, 57, 40), 'bankName': u'ICBC', 'bankNo': u'6228480666622220011', 'createTime': datetime.datetime(2017, 6, 15, 13, 57, 40), u'version': 0, u'id': 2}, 
    {'updateTime': datetime.datetime(2017, 6, 15, 13, 58), 'bankName': u'ICBC', 'bankNo': u'6228480666622220011', 'createTime': datetime.datetime(2017, 6, 15, 13, 58), u'version': 0, u'id': 3}
    ]