我是Python和SQLAlchemy的新手。我一直在玩从数据库中检索东西,并且它每次都有效,但是我不知道当select语句返回多行时该怎么做。我尝试使用一些在我启动SQLAlchemy之前工作的旧代码,但是db
是一个SQLAlchemy对象,并且没有execute()
方法。
application = Applications.query.filter_by(brochureID=brochure.id)
cur = db.execute(application)
entries = cur.fetchall()
然后在我的HTML文件中
{% for entry in entries %}
var getEmail = {{entry.2|tojson|safe}}
emailArray.push(getEmail);
我查看了SQLAlchemy文档,但找不到与获取所有行相同的.first()
。谁能指出我正确的方向?毫无疑问,这是非常小的。
答案 0 :(得分:4)
您的查询是正确的,您只需要更改与结果交互的方式。您要查找的方法是all()
。
application = Applications.query.filter_by(brochureID=brochure.id)
entries = application.all()
答案 1 :(得分:2)
使用orm查询的常用方法是通过Session
类,你应该有的地方
engine = sqlalchemy.create_engine("sqlite:///...")
Session = sqlalchemy.orm.sessionmaker(bind=engine)
我不熟悉烧瓶,但它可能会为你做一些工作。
使用Session
工厂,您的应用程序就是
session = Session()
entries = session.query(Application) \
.filter_by(...) \
.all()