我的 Flask 应用程序读取基于时间的 CSV 观察记录文件,其中附加了新条目。我旨在避免重复的方法是在添加记录之前收集变量并进行测试,如下所示:
sl = db.session.query(DesignObservation).filter_by(worker_id = worker_id).filter_by(design_id = design_id).filter_by(ob_date = ob_date)
if len(sl.all()):
pass
else:
db.session.add(observation_record)
db.session.commit()
不知道为什么这个模式不添加记录。如果我放弃测试,记录会添加,但会在后续运行中添加重复项。
我最终做的是将 design_id 与 ob_date 配对以确定唯一性,然后使用下面的函数检查以返回要添加的记录是否唯一的布尔值。
import parser.parse as date_parse
def check_4_obs_dups(design_id, ob_date):
# returns bool
r = DesignObservation.query.filter_by(design_id=design_id).all()
# convert date strings stored in SQLite to datetime
s = [date_parse(x.ob_date) for x in r]
return date_parse(ob_date) in s
然后在遍历 CSV 文件的每一行时,我用这个循环检查唯一性:
if not check_4_obs_dups(design_id, ob_date):
db.session.add(observation_record
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句