Discuss / Python / 这个是元类有关的bug吗? save时产生的。

这个是元类有关的bug吗? save时产生的。

Topic source

File "C:\Webapp\Mypros\awesome-python3-webapp\www\orm.py", line 251, in <listcomp> return [cls(r) for r in rs] TypeError: ModelMetaclass object argument after must be a mapping, not tuple

问题解决了。tuple,list,dict,学习了两天。 由于select函数返回的数据库值的类型是tuple(元组),不能用于创建字典。 先尝试用for循环重新一个个读,一个个写到字典中,遇到动态变量值变化的问题,循环中的值变了,以前的值也跟着变。 最后,用函数zip创建,代码仅增加一行,更重要的是,解决了动态变量的问题,奥耶。

但不知道这样是不是和廖老师的本意一致。

代码如下:(下划线显示不出来,黑体mappings前后要加下划线) k = cls.mappings.keys() # 根据mappings创建字典键
return [dict(zip(k,list(r))) for r in rs] #tuple不能直接变成字典值,转化成list后,使用zip函数

GrassSand

#3 Created at ... [Delete] [Delete and Lock User]

aiomysql.DictCursor会将结果返回为字典

GrassSand

#4 Created at ... [Delete] [Delete and Lock User]

对于aiopg没有类似方法 可以在select里返回

[dict(zip([column[0] for column in cur.description], row)) for row in rs]

  • 1

Reply