rough guess, outerjoin() has to be in place of the table in mapper(), 
and primaryjoin should be just an expression.
But, if u omit all them primaryjoin/foreignkeys, won't it just work?

On Thursday 30 October 2008 04:43:07 jack2318 wrote:
> Hi,
> I have 3 tables - tbl_item, tbl_item_sku, and tbl_item_lot
>
> Table tbl_item has 2 FKs
>
> my mapper is pretty simple:
>
> mdbItem = mapper(dbItem, tbl_item,
>                  properties={
>                              'sku': relation(dbItemSKU,
>                                              uselist=False,
>
> primaryjoin=tbl_item_sku.c.id==tbl_item.c.ITEM_SKU_id,
>
> foreign_keys=[tbl_item.c.ITEM_SKU_id]
>                                              ),
>                              'lot': relation(dbItemLot,
>                                              uselist=False,
>
> primaryjoin=outerjoin(tbl_item_lot,tbl_item,tbl_item.c.ITEM_LOT_id=
>=tbl_item_lot.c.id),
>
> foreign_keys=[tbl_item.c.ITEM_LOT_id])})
>
> as soon as I try access anything from tbl_item_lot
>
> e.g. dbItem.lot.CODE
>
>  I am getting:
> Unexpected error: <class 'sqlalchemy.exc.ProgrammingError'>
> (ProgrammingError) (1064, "You have an error in your SQL syntax;
> check the manual that corresponds to your MySQL server version for
> the right syntax to use near 'LEFT OUTER JOIN `ITEM` ON 1 =
> `ITEM_LOT`.id' at line 3") u'SELECT `ITEM_LOT`.id AS `ITEM_LOT_id`,
> `ITEM_LOT`.`CODE` AS `ITEM_LOT_CODE`, `ITEM_LOT`.`SERIAL_NO` AS
> `ITEM_LOT_SERIAL_NO`, `ITEM_LOT`.`COMMENT` AS `ITEM_LOT_COMMENT`
> \nFROM `ITEM_LOT` LEFT OUTER JOIN `ITEM` ON %s = `ITEM_LOT`.id
> \nWHERE `ITEM_LOT` LEFT OUTER JOIN `ITEM` ON %s = `ITEM_LOT`.id'
> [1L, 1L]
>
> if I just access data from first join then everything is fine.
>
> Another thing is that I have to specify foreign_keys without that I
> am getting:
> Unexpected error: <class 'sqlalchemy.exc.ArgumentError'> Could not
> determine relation direction for primaryjoin condition
> '`ITEM_SKU`.id = `ITEM`.`ITEM_SKU_id`', on relation dbItem.sku.
> Specify the 'foreign_keys' argument to indicate which columns on
> the relation are foreign.
> even the relations are setup in the database
> CREATE TABLE `ITEM` (
>   `id` int(10) unsigned NOT NULL auto_increment,
>   `ITEM_SKU_id` int(10) unsigned NOT NULL,
>   `ITEM_LOT_id` int(10) unsigned default NULL,
>   PRIMARY KEY  (`id`),
>   KEY `FK_ITEM_LOT` (`ITEM_LOT_id`),
>   KEY `FK_ITEM_SKU` (`ITEM_SKU_id`),
>   CONSTRAINT `FK_ITEM_LOT` FOREIGN KEY (`ITEM_LOT_id`) REFERENCES
> `ITEM_LOT` (`id`),
>   CONSTRAINT `FK_ITEM_SKU` FOREIGN KEY (`ITEM_SKU_id`) REFERENCES
> `ITEM_SKU` (`id`)
> ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
>
> I guess I need help :-)
>
> regards
> -- jacek
>
>
>
>
>
>
> 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to