我是一個嘗試使用Pyramid和SQLAlchemy執行簡單Web應用程序的初學者。截至目前,我的應用程序只是返回存儲在我的表中的所有數據。從SQLAlchemy中的表中選擇數據拋出錯誤
我views.py:
@view_config(route_name='home', renderer='templates/trial.pt')
def my_view(request):
try:
#str=Mystring(name="second",data="Hellostring")
#DBSession.add(str)
myvar=Mystring.query.order_by(Mystrings.data)
except DBAPIError:
return Response(conn_err_msg, content_type='text/plain', status_int=500)
#return {'project': 'Alpy'}
return {'myvar':myvar}
我的模板: -
<body>
<div id="middle">
<div class="middle align-right">
<div id="left" class="app-welcome align-left">
You can return to the
<a href="${request.application_url}">FrontPage</a>.<br/>
<div tal:condition="myvar">
Your selection returns:<br><tal:block tal:content="myvar"></tal:block>
</div>
</div>
</div>
</body>
我model.py:-
class Mystring(Base):
__tablename__ = 'mystrings'
id = Column(Integer, primary_key=True)
name = Column(Text)
data = Column(Text)
我的錯誤是:AttributeError: type object 'Mystring' has no attribute 'query'
我試過這個。 「MYVAR = DBSession.query(MyString的)。所有()」的錯誤走了,但我得到
Your selection returns:
[alpy.models.Mystring object at xxxx, alpy.models.Mystring object at xxxxx]
這是不是我的意圖得到。我想要一個名稱值對。
請幫忙。
我已經編輯我的問題,請檢查。 – Tania 2015-02-06 10:06:11
好的改變,我打算建議它(你在會話實例上運行查詢方法)。你得到一個對象列表,因爲你沒有請求你想要的對象的哪個字段。你可以這樣寫: [x在myvar中的x.name],你得到一個名字列表。與數據字段類似。 你也可以使用正常for循環,但使用列表理解是一個偉大的Python成語。 – 2015-02-06 10:24:53
謝謝。但是,我如何將它們全部發送給響應字典?我是否應該用類名Mystring替換x? – Tania 2015-02-06 10:29:03