.one()和.scalar()有什么区别

时间:2019-04-13 07:04:33

标签: python sqlalchemy flask-sqlalchemy

在SQLAlchemy中, print (js["repartitionLoadType"]) print (js['configBucket'], js['configFileName'], js['HighWaterMarkFileName']) print (js['repartitionTargetTableName'], js['repartitionTargetS3Location']) print (js['repartitionSourceTableName'], js['repartitionSourceDbName']) print (js['repartitionTargetDbName'], js['repartitionLoadType']) print (js['autoCreateCountry'], js['autoCreateTenant'], js['missingPartColDataValReplace']) print (js['countryCodeColName'], js['tenantColName'], js['propagateGlueJobRunGuid']) print (js['countryCodeDefault'], js['tenantDefault'], js['validateIncomingCountryTenant'], js['repartition']) partition_dts = "" # json array for i in range(0, len(js['repartitionTargetColumnList'])): if True == js['repartitionTargetColumnList'][i]['isDatePartition']: partition_dts = "`" + js['repartitionTargetColumnList'][i]['colName'] + "`" else: js['repartitionTargetColumnList'][i]['colName'] = "new value replace/assign here" continue # to set/replace/assign any values above: js["repartitionLoadType"] = "some new value" .one()之间的主要区别是什么,因为两者都执行相同的工作。

我看到了{{3}}之类的网站,但这种解释不足以让我清楚地理解

2 个答案:

答案 0 :(得分:2)

这是区别, 使用one(), 如果您的查询应返回1个结果,否则引发异常。即使返回0结果。

使用scalar(): 如果查询返回1个结果或没有结果。否则引发异常。

答案 1 :(得分:1)

SQLAlchemy有不错的文档。

one()

  

仅返回一个结果或引发异常。

     

如果查询未选择任何行,则引发sqlalchemy.orm.exc.NoResultFound。   如果有多个对象,则引发sqlalchemy.orm.exc.MultipleResultsFound   标识返回,或者查询返回多行   只返回标量值,而不是完整的标识映射   实体。

链接one()方法

scalar()

  

返回第一个结果的第一个元素;如果没有行,则返回None   当下。如果返回多行,则引发MultipleResultsFound。

链接scalar()方法。

如果您对我的建议 SQLAlchemy 有任何疑问-首先,请检查文档,因为它确实功能强大且干净。