- changed status to resolved
unicode type conversion of bind variables
Issue #225
resolved
as in #192 the type conversion of bind variables is not made in the following case
first mapper
addresses = sqlalchemy.Table(
'addresses',z3c.zalchemy.metadata,
sqlalchemy.Column('userName', sqlalchemy.Unicode,
sqlalchemy.ForeignKey('members.userName'),
primary_key=True,
nullable=False),
sqlalchemy.Column('addressType', sqlalchemy.Integer,
nullable=False,
primary_key=True),
sqlalchemy.Column('organisation', sqlalchemy.Unicode),
sqlalchemy.Column('address', sqlalchemy.Unicode),
sqlalchemy.Column('zipCode', sqlalchemy.Unicode),
sqlalchemy.Column('city', sqlalchemy.Unicode),
sqlalchemy.Column('state', sqlalchemy.Unicode, default=u'AT'),
sqlalchemy.Column('email', sqlalchemy.Unicode),
sqlalchemy.Column('phone', sqlalchemy.Unicode),
sqlalchemy.Column('homePage', sqlalchemy.Unicode),
sqlalchemy.Column('isContact', sqlalchemy.Boolean),
)
second mapper
sqlalchemy.mapper(Member,members,properties={
'_personalAddress':sqlalchemy.relation(AddressInfo,
uselist=False,
backref='__parent__',
private=True,
foreignkey=addresses.c.userName,
primaryjoin=sqlalchemy.and_(
members.c.userName==addresses.c.userName,
addresses.c.addressType==1
)),
'_orgAddress':sqlalchemy.relation(AddressInfo,
uselist=False,
backref='__parent__',
private=True,
foreignkey=addresses.c.userName,
primaryjoin=sqlalchemy.and_(
members.c.userName==addresses.c.userName,
addresses.c.addressType==2
)),
})
the this traceback when accessing _personalAddress
2006-06-27T14:10:10 ERROR SiteError http://localhost:8080/++skin++FHVAO/portal/members/bd/@@editAddress.html
Traceback (most recent call last):
File "/Users/bd/zsandbox/trunk/src/zope/publisher/publish.py", line 133, in publish
result = publication.callObject(request, obj)
File "/Users/bd/zsandbox/trunk/src/zope/app/publication/zopepublication.py", line 161, in callObject
return mapply(ob, request.getPositionalArguments(), request)
File "/Users/bd/zsandbox/trunk/src/zope/publisher/publish.py", line 108, in mapply
return debug_call(obj, args)
File "/Users/bd/zsandbox/trunk/src/zope/publisher/publish.py", line 114, in debug_call
return obj(*args)
File "/Users/bd/zsandbox/trunk/src/zope/formlib/form.py", line 757, in __call__
self.update()
File "/Users/bd/zsandbox/trunk/src/zope/formlib/form.py", line 720, in update
self.setUpWidgets()
File "/Users/bd/zsandbox/trunk/src/zope/formlib/form.py", line 797, in setUpWidgets
adapters=self.adapters, ignore_request=ignore_request
File "/Users/bd/zsandbox/trunk/src/zope/formlib/form.py", line 356, in setUpEditWidgets
adapter = interface(context)
File "/Users/bd/zsandbox/trunk/src/zope/app/component/hooks.py", line 96, in adapter_hook
return siteinfo.adapter_hook(interface, object, name, default)
File "/Users/bd/zopes/fhvao/lib/python/fhvao/member.py", line 29, in memberPersonalAddress
return member.personalAddress
File "/Users/bd/zopes/fhvao/lib/python/fhvao/member.py", line 128, in fget
return self._personalAddress
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/attributes.py", line 29, in __get__
return self.get(obj)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/attributes.py", line 145, in get
obj.__dict__[self.key](self.key) = callable_()
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/orm/properties.py", line 388, in lazyload
result = self.mapper.using(session).select_whereclause(self.lazywhere, order_by=order_by, params=params)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/orm/query.py", line 225, in select_whereclause
return self._select_statement(statement, params=params)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/orm/query.py", line 295, in _select_statement
return self.instances(statement, params=params, **kwargs)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/orm/query.py", line 257, in instances
result = self.session.execute(self.mapper, clauseelement, params=params)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/orm/session.py", line 114, in execute
return self.connection(mapper, close_with_result=True).execute(clause, params, **kwargs)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/engine/base.py", line 240, in execute
return Connection.executors[type(object).__mro__[-2](type(object).__mro__[-2)](self, object, *multiparams, **params)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/engine/base.py", line 264, in execute_clauseelement
return self.execute_compiled(elem.compile(engine=self.__engine, parameters=param), *multiparams, **params)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/engine/base.py", line 280, in execute_compiled
proxy(str(compiled), parameters)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/engine/base.py", line 276, in proxy
self._execute_raw(statement, parameters, cursor=cursor, context=context)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/engine/base.py", line 315, in _execute_raw
self._execute(cursor, statement, parameters, context=context)
File "/Users/bd/zopes/fhvao/lib/python/sqlalchemy/engine/base.py", line 334, in _execute
raise exceptions.SQLError(statement, parameters, e)
SQLError: (NotSupportedError) Variable_TypeByValue(): unhandled data type unicode 'SELECT addresses.userName AS addresses_userName, addresses.city AS addresses_city, addresses.addressType AS addresses_addressType, addresses.isContact AS addresses_isContact, addresses.organisation AS addresses_organisation, addresses.zipCode AS addresses_zipCode, addresses.phone AS addresses_phone, addresses.state AS addresses_state, addresses.address AS addresses_address, addresses.homePage AS addresses_homePage, addresses.email AS addresses_email \nFROM addresses \nWHERE :lazy_2e8f = addresses.userName AND addresses.addressType = :addresses_addressType ORDER BY addresses.rowid' {'addresses_addressType': 1, 'lazy_2e8f': u'bd'}
Comments (1)
-
repo owner - Log in to comment
changeset:1667