如果对象已经存在(根据提供的参数),我希望从数据库中获取该对象,如果不存在,则创建该对象
Django的get\u或\u create(或source)就是这样做的。在炼金术中有没有一条等价的捷径
我现在明确地写出来如下:
def get_或_create_仪器(会话,序列号):
instrument=session.query(instrument).filter_by(serial_number=serial_number).first()
如果仪器:
返回仪表
其他:
仪表=仪表(序列号)
会议.增补(文书)
返回仪表
按照@WoLpH的解决方案,这是适用于我的代码(简单版本):
def get_或_create(会话、模型,**kwargs):
instance=session.query(model).filter_by(**kwargs).first()
例如:
返回实例
其他:
实例=模型(**kwargs)
session.add(实例)
session.commit()
返回实例
有了它,我就可以得到或创建我模型的任何对象
假设我的模型对象是:
类别国家(基本):
__tablename_uuu=‘国家’
id=列(整数,主键=True)
名称=列(字符串,unique=True)
要获取或创建我的对象,我写:
myCountry=get\u或\u create(会话、国家、名称=countryName)