我想从数据库中获取一个对象(如果已存在)(基于提供的参数),或者如果不存在则创建它。
Django的get_or_create
(或source
)做到了。SQLAlchemy中是否有等效的快捷方式?
我目前正在像这样明确地写出来:
def get_or_create_instrument(session, serial_number):
instrument = session.query(Instrument).filter_by(serial_number=serial_number).first()
if instrument:
return instrument
else:
instrument = Instrument(serial_number)
session.add(instrument)
return instrument
基本上就是这样做的方法,没有快捷方式可供使用的AFAIK。
你可以将其概括为:
def get_or_create(session, model, defaults=None, **kwargs):
instance = session.query(model).filter_by(**kwargs).first()
if instance:
return instance, False
else:
params = dict((k, v) for k, v in kwargs.iteritems() if not isinstance(v, ClauseElement))
params.update(defaults or {})
instance = model(**params)
session.add(instance)
return instance, True
问题内容: 不幸的是,HTML中没有CDATA。 遗憾的是,因为它非常适合添加包含XML的注释,因此您不必转义<和>,例如: 但是,可以识别CDATA部分,然后将其转换为HTML。例如: 或者它可以使用比CDATA更简单的语法。因为是可扩展的,所以可能有人添加了此功能。也许已经将它埋在里面的某处…有人知道吗? 问题答案: 您可以使用JavaDoc的标签:
问题内容: 在Swift中,转义的闭包参数用注释。在Objective- C中是否有任何等效项,以便将生成的Swift接口标记为? 问题答案: 是的,但是从您在问题中提出的建议来看是落后的。规则是,除非明确标记,否则Objective-C不可为空的块会 自动 转换为Swift作为函数。 __
有没有办法跳过使用PayPal REST Api的两步确认过程? 我已经成功地使用PayPalREST api实现了标准流程,它将用户带到PayPal网站,在那里他们输入他们的凭据,然后得到带有“继续”选项的订单摘要。“你快完成了。您将在xxxx商店确认付款”。 有没有一种方法可以跳过这一步?这样就不会让用户返回我的网站,在那里他们必须再次查看订单并选择“付款”,而是在PayPal上显示“立即付款
我是一个JaxB noob,但我学到了很多关于如何配置Jackson的知识。我正在为一些域对象类添加XML序列化/反序列化支持。我有一个类类型,它根据必须指定的上下文进行不同的序列化/反序列化。 通过编写HandlerInstantiator的自定义实现,我在Jackson中实现了这一点。自定义实现将上下文作为构造函数参数。当这些上下文敏感对象需要序列化器或反序列化器时,提供它的方法会使用构造处理
问题内容: 当搜索复杂的JSON数组和哈希中的项目时,例如: 我可以使用某种查询语言来查找商品吗? 问题答案: 是的,它称为JSONPath。源码现在在GitHub上。 它还集成到DOJO中。
问题内容: 是否可以使用并发时保持正确性来重写下面的代码? 即从java.util.concurrent是否有可以代替的东西?请注意,仅替换为 显然行不通 问题答案: Guava的CacheBuilder类使您可以轻松地做到这一点。 请注意,在您使用实例的情况下,这会将键相等语义更改为,而不是将其替换为无关紧要,但这是一个潜在的陷阱。