<type 'exceptions.ValueError'> 基数10无效字面值: 'My-Library-Name
我在控制器里写查询代码:
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,
)
因为主键是用来连接 旧数据库 的。不知道这是否适合你的情况。