SQLAlchemy获取匹配查询的每一行并循环遍历它们

时间:2014-02-24 21:57:15

标签: python sqlalchemy flask

我是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()。谁能指出我正确的方向?毫无疑问,这是非常小的。

2 个答案:

答案 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()