Я использую: SQLAlchemy 0.7.9 и Python 2.7.3 с Bottle 0.11.4. Я любитель в питоне.
У меня есть класс (со многими столбцами), полученный из декларативной базы следующим образом:
class Base(object):
@declared_attr
def __tablename__(cls):
return cls.__name__.lower()
id = Column(Integer, primary_key = True)
def to_dict(self):
serialized = dict((column_name, getattr(self, column_name))
for column_name in self.__table__.c.keys())
return serialized
Base = declarative_base(cls=Base)
class Case(Base):
version = Column(Integer)
title = Column(String(32))
plausible_dd = Column(Text)
frame = Column(Text)
primary_task = Column(Text)
secondary_task = Column(Text)
eval_objectives = Column(Text)
...
В настоящее время я использую этот «маршрут» в Bottle для вывода строки/класса в json следующим образом:
@app.route('/<name>/:record')
def default(name, record, db):
myClass = getattr(sys.modules[__name__], name)
parms = db.query(myClass).filter(myClass.id == record)
result = json.dumps(([parm.to_dict() for parm in parms]))
return result
Мой первый вопрос: как я могу сделать так, чтобы в каждом столбце был некоторый статический текст, который я мог бы использовать в качестве имени собственного, чтобы я мог перебирать столбцы и получать их значения И собственные имена? Например:
class Case(Base):
version = Column(Integer)
version.pn = "Version Number"
Мой второй вопрос: делает ли следующее то, что я ищу? Я видел примеры этого, но я не понимаю объяснения.
Пример из sqlalchemy.org:
id = Column("some_table_id", Integer)
Моя интерпретация примера:
version = Column("Version Number", Integer)
Очевидно, я не хочу создавать столбец таблицы. Я просто хочу, чтобы столбец имел «атрибут» в общем смысле. Заранее спасибо.