I've got a fairly simple database made with django and accessed via sqlsoup.
(finally got some time to take more of a look at the tutorial, which helped a
little :)
The two tables are
devmap_device
id
device_name
manufacturer_id
devmap_manufacturer
id
manufacturer_name
I tried to make a join to retrieve a device/manufacturer...
>>> from db import devmap_device, devmap_manufacturer
>>>
>>> e = create_engine('postgres://user:[email protected]/xxxx')
>>> db = SqlSoup(MetaData(e))
>>>
>>> db.devmap_device.join(db.devmap_manufacturer,
>>> db.devmap_device.manufacturer_id == db.devmap_manufacturer.id).first()
>>>
### At this point it says:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <lambda>
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\util.py",
line 212, in go
return fn(*args, **kw)
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\orm\query.py",
line 873, in join
return self.__join(props, outerjoin=False, create_aliases=aliased,
from_joinpoint=from_joinpoint)
File "<string>", line 1, in <lambda>
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\orm\query.py",
line 52, in generate
fn(self, *args[1:], **kw)
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\orm\query.py",
line 1071, in __join
clause = orm_join(clause, right_entity, onclause, isouter=outerjoin,
join_to_left=join_to_left)
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\orm\util.py",
line 432, in join
return _ORMJoin(left, right, onclause, isouter, join_to_left)
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\orm\util.py",
line 409, in __init__
expression.Join.__init__(self, left, right, onclause, isouter)
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\sql\expression.py",
line 2479, in __init__
self.right = _selectable(right).self_group()
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\sql\expression.py",
line 968, in _selectable
raise exc.ArgumentError("Object %r is not a Selectable and does not
implement `__selectable__()`" % element)
sqlalchemy.exc.ArgumentError: Object
<sqlalchemy.sql.expression._BinaryExpression object at 0x00FAB4B0> is not a
Selecta
ble and does not implement `__selectable__()`
###
Also, if I try
>>> db.with_labels(db.devmap_manufacturer)
It says:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\ext\sqlsoup.py",
line 534, in with_labels
return
self.map(expression._selectable(item).select(use_labels=True).alias('foo'))
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\ext\sqlsoup.py",
line 528, in map
t = class_for_table(selectable, **kwargs)
File
"c:\python25\lib\site-packages\SQLAlchemy-0.5.2-py2.5.egg\sqlalchemy\ext\sqlsoup.py",
line 448, in class_for_tabl
e
engine_encoding = selectable.metadata.bind.dialect.encoding
AttributeError: 'Alias' object has no attribute 'metadata'
...which seems strange as
>>> db.with_labels(db.devmap_device)
works fine !
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---