我目前有两部分代码,其中一部分将全新的行插入到mySQL数据库中。第二个只是更新一行(如果已存在)。
我正在尝试将这两者合并为一个函数,该函数自动检查ID是否在表中,如果是,则更新,否则插入新行?这是我到目前为止所拥有的:
class Example(db.Model):
__tablename__ = 'schools'
_id = db.Column('_id', db.Unicode, primary_key=True)
establishmentNumber = db.Column('establishmentNumber', db.Unicode)
laCode = db.Column('laCode', db.Unicode)
urn = db.Column('urn', db.Unicode)
name = db.Column('name', db.Unicode)
phaseOfEducation = db.Column('phaseOfEducation', db.Unicode)
wondeID = db.Column('wondeID', db.Unicode)
def __init__(self, _id, establishmentNumber, laCode, urn, name, phaseOfEducation, wondeID):
self._id = _id
self.establishmentNumber = establishmentNumber
self.laCode = laCode
self.urn = urn
self.name = name
self.phaseOfEducation = phaseOfEducation
self.wondeID = wondeID
def add_or_update(cls, _id, establishmentNumber, laCode, urn, name, phaseOfEducation, wondeID):
entity = cls.query.filter_by(_id=school._id.iloc[0]).first()
print(entity)
if not entity:
entity = cls(school._id.iloc[0], school.establishmentNumber.iloc[0], school.laCode.iloc[0], school.urn.iloc[0], school.name.iloc[0], school.phaseOfEducation.iloc[0], school.wondeID.iloc[0])
db.session.add(entity)
db.session.commit()
else:
entity.establishmentNumber = 'hello'
db.session.commit()
print (entity.establishmentNumber)
return entity
它不会产生任何错误,但是也不会添加或更新。谁能看到我做错了什么?
您有缩进错误。重新缩进像:
def __init__(self, _id, establishmentNumber, laCode, urn, name, phaseOfEducation, wondeID):
self._id = _id
self.establishmentNumber = establishmentNumber
self.laCode = laCode
self.urn = urn
self.name = name
self.phaseOfEducation = phaseOfEducation
self.wondeID = wondeID
@classmethod
def add_or_update(cls, _id, establishmentNumber, laCode, urn, name, phaseOfEducation, wondeID):
entity = cls.query.filter_by(_id=school._id.iloc[0]).first()
print(entity)
if not entity:
entity = cls(school._id.iloc[0], school.establishmentNumber.iloc[0], school.laCode.iloc[0],
school.urn.iloc[0], school.name.iloc[0], school.phaseOfEducation.iloc[0],
school.wondeID.iloc[0])
db.session.add(entity)
db.session.commit()
else:
entity.establishmentNumber = 'hello'
db.session.commit()
print(entity.establishmentNumber)
return entity
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句