【发布时间】:2023-03-17 22:47:01
【问题描述】:
我目前有两个单独的代码部分,一个将一个全新的行插入到 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
它不会产生任何错误,但它也不会添加或更新。谁能看到我做错了什么?
【问题讨论】:
标签: python mysql flask-sqlalchemy