Source code for sqlobject.tests.test_pickle
import pickle
import pytest
from sqlobject import IntCol, SQLObject, StringCol
from sqlobject.tests.dbtest import getConnection, raises, setupClass
########################################
# Pickle instances
########################################
[docs]class SOTestPickle(SQLObject):
question = StringCol()
answer = IntCol()
test_question = 'The Ulimate Question of Life, the Universe and Everything'
test_answer = 42
[docs]def test_pickleCol():
setupClass(SOTestPickle)
connection = SOTestPickle._connection
test = SOTestPickle(question=test_question, answer=test_answer)
pickle_data = pickle.dumps(test, pickle.HIGHEST_PROTOCOL)
connection.cache.clear()
test = pickle.loads(pickle_data)
test2 = connection.cache.tryGet(test.id, SOTestPickle)
assert test2 is test
assert test.question == test_question
assert test.answer == test_answer
if (connection.dbName == 'sqlite') and connection._memory:
pytest.skip("The following test requires a different connection")
test = SOTestPickle.get(
test.id,
# make a different DB URI and open another connection
connection=getConnection(registry=''))
raises(pickle.PicklingError, pickle.dumps, test, pickle.HIGHEST_PROTOCOL)