<type'exception.valueerror'=“”>基数为10的long()的文字无效:&#39;我的图书馆名称&#39; </type>

时间:2014-08-04 19:23:30

标签: python postgresql web2py web2py-modules

我正在控制器中编写查询代码:

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 :(得分: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,
            )

由于primarykey旨在连接到legacy DB。不知道这是不是你的情况