Web2py MySQL数据库引用错误

Posted

技术标签:

【中文标题】Web2py MySQL数据库引用错误【英文标题】:Web2py MySQL database reference error 【发布时间】:2017-09-08 15:20:53 【问题描述】:

我正在使用带有 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()

它返回这个错误:ValueError: invalid literal for long() with base 10: 'fb|1234'。 我希望有人知道导致此错误的原因并可以帮助我解决它。

亲切的问候, 西蒙

【问题讨论】:

你为什么使用primarkey?这很少需要,仅用于支持旧数据库。 【参考方案1】:

首先,您需要在旧表中将 migrate 设置为 False。所以 web2py 不会打算改变它们。

其次,尝试指定字段userid的类型,因为当您尝试将“fb|1234”转换为整数时会发生此类错误:

>>> int("fb|1234") 
ValueError: invalid literal for int() with base 10: 'fb|1234'

【讨论】:

以上是关于Web2py MySQL数据库引用错误的主要内容,如果未能解决你的问题,请参考以下文章

将 MySQL 查询转换为在 web2py DAL 中使用

可以将带有子查询的 Mysql 查询转换为 web2py DAL 吗?

默认情况下,级联上的 web2py 数据库抽象层 (DAL) 引用是啥?

没有 web2py 的 DAL

web2py 中的外键

错误 1452 MySQL 和 NodeJS。为啥数据库不能正确引用我的表?