我是webdev的新手,这几天计划用web2py编写一个boradgame。在web2py中跨会话的全局对象访问?
当开始编码时,我发现我不能轻松使用全局变量。
为了演示的目的,我想要一个python列表对象被很多玩家访问,我使用sqlite来使它工作。
数据库(使用DAL('sqlite:memory:')
将无法正常工作),所以我尽量文件的方式,它可以作为我的想法:
memdb = DAL('sqlite://storage.sqlite')
memdb.define_table('room', Field('card_on_desk', 'blob'))
创建房间:
roomid = memdb.room.insert(card_on_desk=pickle.dumps(list()))
memdb.commit()
改变房间的card_on_desk字段:
record = memdb.room(roomid)
cards = pickle.loads(record.card_on_desk)
cards.append(','.join(c))
memdb(memdb.room.id==roomid).update(card_on_desk=pickle.dumps(cards))
memdb.commit()
一些大师说有一个cache.ram()方法,我想知道如何做t他以上的东西。
等待你的答案。
S.Lott提到,使用DAL时,我没有描述发生了什么( 'sqlite的:内存:'):
使用sqlite:memory
而不是 '源码://storage.sqlite',该memdb插件是一好吗http请求,但没有任何保存,每当你打电话给我时memdb.room.insert()
返回我调用的时间,当请求完成时,没有任何内容保存,memdb.room(1)总是返回None。
Anthony的建议更有用,我会尽量使用这种方式,有点难以做到。
“但它不会工作”?既然这没有意义,你会永远等待答案。也许你应该解释“但它不会工作”。 – 2011-05-24 10:22:33
@ S.Lott好像你误会了我,抱歉我的坏描述。我的意思是'DAL('sqlite:memory:')'不起作用,文件的方式起作用。 – Gohan 2011-05-24 10:58:58
@Gohan:你好像误解了我。抱歉含糊不清。 “不起作用”并不意味着什么。这是没有意义的。它不能被理解。你必须提供**实际**错误,你实际上**得到。摘要(“不起作用”)是不可接受的。事实(例如错误消息)是可以接受的。 – 2011-05-24 12:49:52