We don't have very good support for SqlSoup as it was written many years ago 
and is only updated occasionally, can you reproduce your error using normal 
SQLAlchemy mappings + table reflection ?   Or at least trying Python 2 ?




On Aug 17, 2011, at 3:53 PM, Ygor Lemos wrote:

> Hi,
> 
> I was trying to do a simple relate according to SqlSoup documentation,
> but this error keeps popping every time for every tables I try to
> relate even though the foreign keys are right and valid and a manual
> SQL join works normally:
> 
> 
> 
> 
>>>> db.audits.relate('customer', db.customers)
> 2011-08-17 16:46:22,560 INFO sqlalchemy.engine.base.Engine SELECT
> DATABASE()
> 2011-08-17 16:46:22,561 INFO sqlalchemy.engine.base.Engine ()
> 2011-08-17 16:46:22,564 INFO sqlalchemy.engine.base.Engine SHOW
> VARIABLES LIKE 'lower_case_table_names'
> 2011-08-17 16:46:22,564 INFO sqlalchemy.engine.base.Engine ()
> 2011-08-17 16:46:22,565 INFO sqlalchemy.engine.base.Engine SHOW
> COLLATION
> 2011-08-17 16:46:22,565 INFO sqlalchemy.engine.base.Engine ()
> 2011-08-17 16:46:22,571 INFO sqlalchemy.engine.base.Engine SHOW
> VARIABLES LIKE 'sql_mode'
> 2011-08-17 16:46:22,571 INFO sqlalchemy.engine.base.Engine ()
> 2011-08-17 16:46:22,592 INFO sqlalchemy.engine.base.Engine SHOW CREATE
> TABLE `audits`
> 2011-08-17 16:46:22,592 INFO sqlalchemy.engine.base.Engine ()
> 2011-08-17 16:46:22,595 INFO sqlalchemy.engine.base.Engine SHOW CREATE
> TABLE `customers`
> 2011-08-17 16:46:22,595 INFO sqlalchemy.engine.base.Engine ()
> 2011-08-17 16:46:22,597 INFO sqlalchemy.engine.base.Engine SHOW CREATE
> TABLE `users`
> 2011-08-17 16:46:22,597 INFO sqlalchemy.engine.base.Engine ()
>>>> a = db.audits.first()
> 2011-08-17 16:46:39,724 INFO sqlalchemy.engine.base.Engine BEGIN
> (implicit)
> 2011-08-17 16:46:39,725 INFO sqlalchemy.engine.base.Engine SELECT
> audits.id AS audits_id, audits.site AS audits_site, audits.zeit AS
> audits_zeit, audits.responsible AS audits_responsible, audits.prologue
> AS audits_prologue, audits.checklists AS audits_checklists,
> audits.utype AS audits_utype, audits.customers_id AS
> audits_customers_id, audits.users_id AS audits_users_id
> FROM audits
> LIMIT ?, ?
> 2011-08-17 16:46:39,725 INFO sqlalchemy.engine.base.Engine (0, 1)
> 
> 
>>>> a
> MappedAudits(id=179,site='123',zeit=datetime.datetime(2011, 8, 15, 3,
> 20,
> 38),responsible='123',prologue='123',checklists='4',utype=None,customers_id=1,users_id=3)
> 
> 
>>>> a.customer
> 2011-08-17 16:46:48,668 INFO sqlalchemy.engine.base.Engine SELECT
> customers.id AS customers_id, customers.name AS customers_name,
> customers.doc AS customers_doc, customers.email AS customers_email,
> customers.active AS customers_active
> FROM customers
> WHERE customers.id = ?
> 2011-08-17 16:46:48,668 INFO sqlalchemy.engine.base.Engine (1,)
> 
> Traceback (most recent call last):
>  File "/usr/local/lib/python3.2/dist-packages/SQLAlchemy-0.7.2-
> py3.2.egg/sqlalchemy/ext/sqlsoup.py", line 474, in _compare
>    t2 = [getattr(o, k) for k in L]
>  File "/usr/local/lib/python3.2/dist-packages/SQLAlchemy-0.7.2-
> py3.2.egg/sqlalchemy/ext/sqlsoup.py", line 474, in <listcomp>
>    t2 = [getattr(o, k) for k in L]
> AttributeError: 'symbol' object has no attribute 'active'
> 
> During handling of the above exception, another exception occurred:
> 
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
>  File "/usr/local/lib/python3.2/dist-packages/SQLAlchemy-0.7.2-
> py3.2.egg/sqlalchemy/orm/attributes.py", line 168, in __get__
>    return self.impl.get(instance_state(instance),dict_)
>  File "/usr/local/lib/python3.2/dist-packages/SQLAlchemy-0.7.2-
> py3.2.egg/sqlalchemy/orm/attributes.py", line 424, in get
>    if value in (PASSIVE_NO_RESULT, NEVER_SET):
>  File "/usr/local/lib/python3.2/dist-packages/SQLAlchemy-0.7.2-
> py3.2.egg/sqlalchemy/ext/sqlsoup.py", line 487, in __eq__
>    t1, t2 = _compare(self, o)
>  File "/usr/local/lib/python3.2/dist-packages/SQLAlchemy-0.7.2-
> py3.2.egg/sqlalchemy/ext/sqlsoup.py", line 476, in _compare
>    raise TypeError('unable to compare with %s' % o.__class__)
> TypeError: unable to compare with <class
> 'sqlalchemy.util.langhelpers.symbol'>
>>>> 
> 
> 
> 
> My Foreign keys are all correctly setup and as a simple relation this
> should just work, but I have no idea on what is going on with this.
> Anybody had the same issue ?
> 
> 
> Follows a description of my environment and the related tables:
> 
> OS: Tested on both Linux Ubuntu Natty 64bit and Mac OS X 10.7.1 Lion.
> Python: Python 3.2.1
> SQLAlchemy: 0.7.2
> MySQL: 5.5.12
> MySQL Python Driver/Connector: OurSQL 0.9.2
> 
> 
> Follows the tables description:
> 
> 
> === audits ===
> 
> CREATE TABLE `audits` (
>  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
>  `site` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
>  `zeit` datetime NOT NULL COMMENT 'date the audit was started (zeit =
> german for time)',
>  `responsible` varchar(100) CHARACTER SET latin1 NOT NULL,
>  `prologue` text CHARACTER SET latin1 COMMENT 'digest at the
> beginning',
>  `checklists` varchar(30) DEFAULT ' ',
>  `utype` varchar(45) DEFAULT NULL,
>  `customers_id` int(10) unsigned NOT NULL,
>  `users_id` int(10) unsigned NOT NULL,
>  PRIMARY KEY (`id`),
>  KEY `fk_audits_users1` (`users_id`),
>  KEY `utype` (`utype`) USING BTREE,
>  KEY `fk_audits_customers1` (`customers_id`),
>  CONSTRAINT `fk_audits_customers1` FOREIGN KEY (`customers_id`)
> REFERENCES `customers` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
>  CONSTRAINT `fk_audits_users1` FOREIGN KEY (`users_id`) REFERENCES
> `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
> ) ENGINE=InnoDB AUTO_INCREMENT=235 DEFAULT CHARSET=utf8
> 
> 
> 
> === customers ===
> 
> customers | CREATE TABLE `customers` (
>  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
>  `name` varchar(100) CHARACTER SET latin1 NOT NULL,
>  `doc` varchar(25) CHARACTER SET latin1 NOT NULL,
>  `email` varchar(100) CHARACTER SET latin1 DEFAULT NULL,
>  `active` tinyint(1) DEFAULT '1',
>  PRIMARY KEY (`id`),
>  UNIQUE KEY `customers_index_name` (`name`),
>  UNIQUE KEY `customers_index_doc` (`doc`)
> ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8
> 
> 
> 
> Thanks!
> 
> -- 
> 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 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 

-- 
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 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to