<type 'exceptions.ValueError'> 基数10无效字面值: 'My-Library-Name

0 投票
1 回答
1069 浏览
提问于 2025-04-18 15:58

我在控制器里写查询代码:

books=db(db.book.lib_name=="My-Library-Name").select(db.book.title, db.book.ISBN, orderby=db.book.title)

但是我一直收到这个错误:

<type 'exceptions.ValueError'> invalid literal for long() with base 10: "My-Library-Name"

这是我的数据访问层(DAL)数据库(我使用的是PostgreSQL作为数据库驱动):

db = DAL('postgres://myUsername:myPassword@localhost/libman',pool_size=0)
db.define_table('library',
            Field('lib_name', ondelete='CASCADE', unique=True),
            Field('address', length=20),
            primarykey=['lib_name'])

db.define_table('book',
                Field('ISBN', unique=True, ondelete='CASCADE'),
                Field('lib_name', 'reference library'),
                Field('pic', 'upload'),
                Field('title', length=100),
                Field('publisher_lname', length=50),
                Field('publisher_fname', length=50),
                Field('no_of_copies', 'integer'),
                Field('available_copies', 'integer'),
                Field('description', length=255),
                primarykey=['ISBN'])

提前感谢你的回复

1 个回答

0

lib-name 是一个外键,所以这个查询不合法。你可以基于 db.book.ISBN 来进行查询。

另一方面,我建议你把模型改成:

db.define_table('library',
        Field('lib_name', ondelete='CASCADE', unique=True),
        Field('address', length=20),
        migrate=True,
        )

db.define_table('book',
            Field('ISBN', unique=True, ondelete='CASCADE'),
            Field('lib_name', 'reference library'),
            Field('pic', 'upload'),
            Field('title', length=100),
            Field('publisher_lname', length=50),
            Field('publisher_fname', length=50),
            Field('no_of_copies', 'integer'),
            Field('available_copies', 'integer'),
            Field('description', length=255),
            migrate=True,
            )

因为主键是用来连接 旧数据库 的。不知道这是否适合你的情况。

撰写回答