0

我尝试在 def 中制作这个数据库

database = DAL('sqlite://userhistory3.db')
database.define_table('userjob', Field('UserID'),Field('JobID'))
session.database=database

但是当我尝试在另一个 def 中插入一个值时

sd=session.database     
sd.userjob.insert(UserID=auth.user_id,JobID=job_Id)
database.commit()

我收到错误“DAL”对象没有属性“_lazy_tables”。我该怎么办?

4

1 回答 1

0

当您DAL从会话中检索(数据库连接)对象时,它只有在您首先使用相同的连接字符串重新连接时才会起作用——如下所示:

database = DAL('sqlite://userhistory3.db')
sd=session.database

但是检索到的连接不会有任何表定义,因此它对您的目的没有用处。

通常,您不需要将DAL对象存储在会话中。只需将DAL创建和表定义放在模型文件中,它就可用于所有请求——无需继续保存和从会话中检索。

此外,没有理由db.commit()在应用程序代码中调用——提交是在请求结束时自动完成的。

于 2013-04-12T11:53:43.360 回答