peewee连表查询

q = UmPermissions.select(UmPermissions, UmUsersRoles.f_expire_time)\
    .join(UmRolesPermissions, on=(UmRolesPermissions.f_res_code == UmPermissions.f_res_code))\
    .join(UmRoles, on=(UmRolesPermissions.f_role_code == UmRoles.f_role_code))\
    .join(UmUsersRoles, on=(UmRoles.f_role_code == UmUsersRoles.f_role_code))\
    .where(UmUsersRoles.f_user_id == userid)\
    .distinct()

print(q.__dict__)
# a = list(q)
a = list(q.objects())
print(a)
b = a[0]
print(b.f_res_code)
print(b.__dict__)

query_model = ProjectAlgorithmVersion.select(ProjectAlgorithmVersion.id, Project.project_name).join(Project, on=(ProjectAlgorithmVersion.project_id == Project.project_id), attr='p').where(ProjectAlgorithmVersion.id == 2)

join表数量过多时,结果中只有第一个表的数据,需使用objects()获取结果。正常情况下,可以通过全小写属性获取后面的表,比如umrolespermissions。或者在join中指定attr。

参考:https://www.cnblogs.com/gcxblogs/p/14669543.html


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注