目标:
筛选数据库中2020-04
月份的数据,并且批量更新is_freeze
字段为1
原语句:
Kaipiao
为表名,Kaipiao.kprq
为开票日期
month = '2020-04'
obj = {'is_freeze':1}
sql = f"Kaipiao.query.filter(Kaipiao.kprq.like('{month}%')).update({obj})"
list= eval(sql)
报错:Could not evaluate current criteria in Python: "Cannot evaluate BinaryExpression with operator <function like_op at 0x000002199CDC40D8>". Specify 'fetch' or False for the synchronize_session parameter.
解决:
加上synchronize_session=False
month = '2020-04'
obj = {'is_freeze':1}
sql = f"Kaipiao.query.filter(Kaipiao.kprq.like('{month}%')).update({obj},synchronize_session=False)"
list= eval(sql)
synchronize_session
用于query在进行delete or update操作时,对session的同步策略。
False - 不对session进行同步,直接进行delete or update操作。