Я новичок в webdev, в эти дни планирую написать 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(), и я хочу знать, как это сделать.
ждать ваших ответов.
S.Lott упомянул, что я не описывал, что происходит при использовании DAL('sqlite:memory:'):
используя sqlite:memory
вместо 'sqlite://storage.sqlite', вставка memdb в http-запросе в порядке, но ничего не сохраняется, каждый раз, когда вы звоните, memdb.room.insert()
возвращает время, которое я вызывал, и когда запрос завершен, в памяти ничего не сохраняется, memdb.room(1) всегда возвращает None.
Совет Энтони более полезен, я постараюсь использовать его таким образом, но это сложно сделать.
DAL('sqlite:memory:')
не получится, файловый способ работает. - person Gohan   schedule 24.05.2011sqlite:memory
. @ Энтони работает над этим, но все еще путается. - person Gohan   schedule 25.05.2011memdb.room(1)
что-нибудь найдет? Почему вы думаете, что идентификатор будет1
? С таким же успехом это может быть 0 или случайное число, назначенное SQLite. Значениеroomid
на самом деле может не быть1
. - person S.Lott   schedule 25.05.2011