私が使用しているのは、SQLAlchemy 0.7.9 および Python 2.7.3 with Bottle 0.11.4 です。私はPythonのアマチュアです。
次のような宣言ベースから派生したクラス(多くの列を持つ)があります。
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)
...
現在、ボトルでこの「ルート」を使用して、次のように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"
私の 2 番目の質問は次のとおりです。この例を見たことがありますが、説明がわかりません。
id = Column("some_table_id", Integer)
例の私の解釈:
version = Column("Version Number", Integer)
明らかに、テーブル列を作成したくありません。列に一般的な意味での「属性」を持たせたいだけです。前もって感謝します。