SQLAlchemy是否与Django的get_或_create等效?

如果对象已经存在(根据提供的参数),我希望从数据库中获取该对象,如果不存在,则创建该对象

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)

发表评论