e 文不好,也尽力去看了官文,这两个问题感觉似乎是,我直接看官文不一定有答案的解决,存在技巧?
DataELE = {'A':'AA','B':'BB','markID':'46628'}
# 查询
DataQuery = session.query(tbl_Data).filter(tbl_Data.markID == DataELE.get('markID')).first()
是否可对 DataQuery 内容进行历遍,表结构虽然已经 class tbl_Data 了,
SQL 表结构简单还好,如果有几十个字段,
去对 tbl_Data.*** N 个字段表达做处理,把字段名字敲写完全和完全正确,还是挺郁闷的。。。
能历遍一梭子就好。。。
第二个问题与上面的问题情景有些不同,但现在我是这么做的,感觉不是很好的样子。。。
把 DataQuery 转了字典(网上看到的例子)
DataELE = {'A':'AA','B':'BB','markID':'46628','UpdateTime':xxxx}
# 查询
DataQuery = session.query(tbl_Data).filter(tbl_Data.markID == DataELE.get('markID')).first()
def to_dict(self):
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
DataQueryDict = to_dict(DataQuery) # 转换字典
DataQueryDict.pop('id') # 剥掉 SQL 自增 ID
DataQueryDict.pop('UpdateTime') # 剥掉更新时间
# 比较内容
if set(DataQueryDict.items()) ^ set(DataELE.items()): # 有不同
writeToLogString = writeToLogString + (str(set(DataQueryDict.items()) ^ set(DataELE.items()))) # 找出不同的地方,后面会把 writeToLogString 保存起来
想找个方法,能否直接比较本地 dict 和 query 结果,又忽略.querry 带来的自增 id,和 updatetime 。。。。
目的是:本地生成了一个 dict,这个 dict 结构看看跟查询结果是否有不同,有不同的地方作为 String 进行 print 。。。。
1
Latin 2020-06-01 10:08:27 +08:00
with_entities 查询你要的字段就好了
|