у объекта должен быть атрибут __dict__. Это словарь, в котором содержатся методы и все атрибуты объекта, включая базовые. Я пользуюсь такой функцией, чтобы исключить лишнее
def obj_to_dict(obj):
''' Convert object to dictonary where keys are names of attributes
and values are values of attributes '''
return dict((key, value) for key, value in obj.__dict__.iteritems() \
if not callable(value) \
and not key.startswith('__') \
and not key.startswith('_sa'))
P.S > (_sa - атрибуты добавляемые алхимией)