Web2py MySQL 数据库引用错误
Web2py MySQL database reference error
我在 MySQL 数据库中使用 web2py。我的 db.py 文件中的数据库方案如下所示:
db.define_table('app',
Field('name'),
Field('appdomain')
)
db.define_table('role_group',
Field('appid', db.app),
Field('name')
)
db.define_table('user',
Field('userid', required=True),
Field('name', required=True),
primarykey=['userid'])
db.define_table('role',
Field('appid', db.app),
Field('role_group', db.role_group),
Field('name')
)
db.define_table('role_authorization',
Field('userid', db.user, required=True),
Field('roleid', db.role, required=True),
primarykey=['userid', 'roleid']
)
db.define_table('group_authorization',
Field('userid', db.user),
Field('groupid', db.role_group),
primarykey=['userid', 'groupid']
)
当我运行以下查询时:
userid = "fb|1234"
userAuthorizations = db((db.user.userid == userid)
& (db.tetra_user.userid == db.role_authorization.userid)
& (db.role_authorization.roleid == db.role.id)
& (db.role.appid == db.app.id)
).select()
它 returns 此错误:ValueError:以 10 为底的 long() 无效文字:'fb|1234'。
我希望有人知道导致此错误的原因并可以帮助我解决它。
亲切的问候,
西蒙
首先,您需要在遗留表中将 migrate 设置为 False。所以 web2py 不会改变它们。
其次,尝试指定字段的类型 userid
因为当您尝试将 "fb|1234" 转换为整数时会发生此类错误:
>>> int("fb|1234")
ValueError: invalid literal for int() with base 10: 'fb|1234'
我在 MySQL 数据库中使用 web2py。我的 db.py 文件中的数据库方案如下所示:
db.define_table('app',
Field('name'),
Field('appdomain')
)
db.define_table('role_group',
Field('appid', db.app),
Field('name')
)
db.define_table('user',
Field('userid', required=True),
Field('name', required=True),
primarykey=['userid'])
db.define_table('role',
Field('appid', db.app),
Field('role_group', db.role_group),
Field('name')
)
db.define_table('role_authorization',
Field('userid', db.user, required=True),
Field('roleid', db.role, required=True),
primarykey=['userid', 'roleid']
)
db.define_table('group_authorization',
Field('userid', db.user),
Field('groupid', db.role_group),
primarykey=['userid', 'groupid']
)
当我运行以下查询时:
userid = "fb|1234"
userAuthorizations = db((db.user.userid == userid)
& (db.tetra_user.userid == db.role_authorization.userid)
& (db.role_authorization.roleid == db.role.id)
& (db.role.appid == db.app.id)
).select()
它 returns 此错误:ValueError:以 10 为底的 long() 无效文字:'fb|1234'。 我希望有人知道导致此错误的原因并可以帮助我解决它。
亲切的问候, 西蒙
首先,您需要在遗留表中将 migrate 设置为 False。所以 web2py 不会改变它们。
其次,尝试指定字段的类型 userid
因为当您尝试将 "fb|1234" 转换为整数时会发生此类错误:
>>> int("fb|1234")
ValueError: invalid literal for int() with base 10: 'fb|1234'