当前位置: 首页 > 面试题库 >

从sqlalchemy获取第一行

关飞翔
2023-03-14
问题内容

我有以下查询:

profiles = session.query(profile.name).filter(and_(profile.email == email, profile.password == password_hash))

如何检查是否有行,如何只返回第一行(如果有匹配项,则只能返回一行)?


问题答案:

使用 query.one()得到之一,正是一个结果。在所有其他情况下,它将引发你可以处理的异常:

from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm.exc import MultipleResultsFound

try:
    user = session.query(User).one()
except MultipleResultsFound, e:
    print e
    # Deal with it
except NoResultFound, e:
    print e
    # Deal with that as well

还有query.first(),它将为你提供可能的第一个结果,而不会引发这些异常。但是,由于你要处理没有结果或超出你的想象的情况,query.one()因此正是你应该使用的方法。



 类似资料:
  • 问题内容: 如果我有一个收藏,例如,我如何拿出第一件?我可以先叫一个,先取一个,然后扔掉。有没有更浪费的方法呢? 问题答案: Iterables.get(yourC,indexYouWant) 因为实际上,如果您使用的是收藏夹,则应该使用Google收藏夹。

  • 问题内容: 我在文档中找不到与此有关的任何信息,但是如何获得在SQLAlchemy中创建的表的列表? 我使用了类方法来创建表。 问题答案: 所有表都收集在SQLAlchemy MetaData对象的属性中。要获取这些表的名称列表: 如果使用声明性扩展,则可能不是您自己管理元数据。幸运的是,元数据仍然存在于基类中, 如果您试图弄清楚数据库中存在哪些表,甚至还没有告诉SQLAlchemy的表,那么可以

  • 问题内容: 我想做这样的事情: 但是就是我尝试的时候。我该如何工作? 问题答案: 您的示例代码应该已经按原样工作。SQLAlchemy应该为其提供一个值,并假设其为自动生成的主键列。主键属性在生成时会立即在过程中填充,并且不需要调用。因此,这里的答案在于以下一项或多项: 映射的详细信息 如果使用的后端有任何奇怪的问题(例如,SQLite不会为复合主键生成整数值) 打开echo时发出的SQL表示什么

  • 我将Python与SQLAlchemy(在我的特殊情况下是GeoAlchemy)一起使用,并且我有一个查询,该查询将生成一列行对象。我希望从这些行对象中提取特定的值,但是SQLAlchemy将行对象解释为单个实体(如果我正确的话,将它们作为字符串返回)。如何在不使用Python解析的情况下更清晰地返回这些单独的值? 我的真实生活用例:PostgreSQL的PostGIS扩展提供了一个名为的函数。此

  • 问题内容: 如何使用SQLAlchemy从表中选择一个或多个随机行? 问题答案: 这在很大程度上是特定于数据库的问题。 我知道PostgreSQL,SQLite,MySQL和Oracle可以通过随机函数进行排序,因此可以在SQLAlchemy中使用它: 接下来,您需要通过所需的记录数来限制查询(例如使用)。 请记住,至少在PostgreSQL中,选择随机记录会带来严重的性能问题。这是一篇很好的文章

  • 问题内容: 我需要最快的方式来获得一周的第一天。例如:今天是11月11日,是星期四;我想要本周的第一天(即11月8日)和一个星期一。我需要用于MongoDB地图功能的最快方法,有什么想法吗? 问题答案: 使用Date对象的方法,您可以知道星期几(0 =星期日,1 =星期一,等等)。 然后,您可以减去该天数加一,例如: