[storm] Error when setting a ref
Gabriel Rossetti
gabriel.rossetti at arimaz.com
Mon Jul 28 10:02:02 BST 2008
Hello everyone,
I have been debugging a test program but I don't see where the error is
comming from. I get this :
INSERT INTO user_group (name) VALUES (%s) (u'admin',)
SELECT user_group.user_group_id FROM user_group WHERE
user_group.user_group_id = 5 ()
INSERT INTO user_group (name) VALUES (%s) (u'users',)
SELECT user_group.user_group_id FROM user_group WHERE
user_group.user_group_id = 6 ()
INSERT INTO `language` (name) VALUES (%s) (u'ENGLISH',)
SELECT `language`.language_id FROM `language` WHERE
`language`.language_id = 5 ()
INSERT INTO `language` (name) VALUES (%s) (u'FRENCH',)
SELECT `language`.language_id FROM `language` WHERE
`language`.language_id = 6 ()
Traceback (most recent call last):
File
"/home/gr/Documents/Code/Python/Proj1/src/services/common/orm.py", line
974, in <module>
orm.populateDb(store)
File
"/home/gr/Documents/Code/Python/Proj1/src/services/common/orm.py", line
772, in populateDb
user1 = User(u"Toto", u"Titi", group1, lang1)
File
"/home/gr/Documents/Code/Python/Proj1/src/services/common/orm.py", line
140, in __init__
self.group = group
File "/usr/lib/python2.5/site-packages/storm/references.py", line 147,
in __set__
self._relation.link(local, remote, True)
File "/usr/lib/python2.5/site-packages/storm/references.py", line 567,
in link
local_vars[local_column].set(remote_var.get())
File "/usr/lib/python2.5/site-packages/storm/variables.py", line 192,
in set
new_value = self.parse_set(value, from_db)
File "/usr/lib/python2.5/site-packages/storm/variables.py", line 372,
in parse_set
% (type(value), value))
TypeError: Expected unicode, found <type 'int'>: 5
What I don't get is that the code doesn't do anything strange, it does
stuff like it's done in the tutorial :
class User(Storm):
__storm_table__ = "user"
id = Int(primary=True, name="user_id")
firstName = Unicode(name="first_name")
lastName = Unicode(name="last_name")
languageId = Int(name="language_id")
language = Reference(languageId, "Language.id")
userParams = ReferenceSet(id, "UserParam.id")
groupId = Unicode(name="user_group_id")
group = Reference(groupId, "UserGroup.id")
def __init__(self, firstName, lastName, group, lang):
self.firstName = firstName
self.lastName = lastName
self.group = group # <-- this is where the exception is raised
self.language = lang
class Language(Storm):
__storm_table__ = "language"
id = Int(primary=True, name="language_id")
name = Unicode()
def __init__(self, name):
self.name = name
class UserGroup(Storm):
__storm_table__ = "user_group"
id = Int(primary=True, name="user_group_id")
name = Unicode()
def __init__(self, name):
self.name = name
def populateDb(store):
# Create the test groups
group1 = UserGroup(u"admin")
print str(group1)
store.add(group1)
group2 = UserGroup(u"users")
store.add(group2)
store.flush()
# Create the test languages
lang1 = Language(u"ENGLISH")
store.add(lang1)
lang2 = Language(u"FRENCH")
store.add(lang2)
store.flush()
# Create the test users
print str(group1) + ", " + str(lang1)
user1 = User(u"Toto", u"Titi", group1, lang1) <-- this is where the
exception is raised
store.add(user1)
store.flush()
# ...
I don't get it, any ideas?
Gabriel
More information about the storm
mailing list