> Here is a thin that puzzles me: > > On Sun, Jun 10, 2007 at 03:05:28PM +0200, Daniel Nogradi wrote: > > sqlobject.dberrors.OperationalError: no such column: animal.cage_id > > But there is "cage_id" columnm in the "animal" table
Well, that's exactly the problem :) > there were a lot > of INSERTs and SELECTs for the table before the traceback. Add "debug=1" to > the DB URI to see the SQL statements. Here is the full output from the above code: 1/Query : CREATE TABLE named ( id INTEGER PRIMARY KEY, name TEXT, child_name VARCHAR(255) ) 1/QueryR : CREATE TABLE named ( id INTEGER PRIMARY KEY, name TEXT, child_name VARCHAR(255) ) 2/Query : CREATE TABLE zoo ( id INTEGER PRIMARY KEY, child_name VARCHAR(255) ) 2/QueryR : CREATE TABLE zoo ( id INTEGER PRIMARY KEY, child_name VARCHAR(255) ) 3/Query : CREATE TABLE cage ( id INTEGER PRIMARY KEY, zoo_id INT CONSTRAINT zoo_id_exists REFERENCES zoo(id) , child_name VARCHAR(255) ) 3/QueryR : CREATE TABLE cage ( id INTEGER PRIMARY KEY, zoo_id INT CONSTRAINT zoo_id_exists REFERENCES zoo(id) , child_name VARCHAR(255) ) 4/Query : CREATE TABLE animal ( id INTEGER PRIMARY KEY, cage_id INT CONSTRAINT cage_id_exists REFERENCES cage(id) , child_name VARCHAR(255) ) 4/QueryR : CREATE TABLE animal ( id INTEGER PRIMARY KEY, cage_id INT CONSTRAINT cage_id_exists REFERENCES cage(id) , child_name VARCHAR(255) ) 5/QueryIns: INSERT INTO named (name, child_name) VALUES ('myzoo', 'zoo') 5/QueryR : INSERT INTO named (name, child_name) VALUES ('myzoo', 'zoo') 6/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (1)) 6/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (1)) 7/QueryIns: INSERT INTO zoo (id, child_name) VALUES (1, NULL) 7/QueryR : INSERT INTO zoo (id, child_name) VALUES (1, NULL) 8/QueryOne: SELECT child_name FROM zoo WHERE ((zoo.id) = (1)) 8/QueryR : SELECT child_name FROM zoo WHERE ((zoo.id) = (1)) 9/QueryIns: INSERT INTO named (name, child_name) VALUES ('firstcage', 'cage') 9/QueryR : INSERT INTO named (name, child_name) VALUES ('firstcage', 'cage') 10/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (2)) 10/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (2)) 11/QueryIns: INSERT INTO cage (id, zoo_id, child_name) VALUES (2, 1, NULL) 11/QueryR : INSERT INTO cage (id, zoo_id, child_name) VALUES (2, 1, NULL) 12/QueryOne: SELECT zoo_id, child_name FROM cage WHERE ((cage.id) = (2)) 12/QueryR : SELECT zoo_id, child_name FROM cage WHERE ((cage.id) = (2)) 13/QueryIns: INSERT INTO named (name, child_name) VALUES ('secondcage', 'cage') 13/QueryR : INSERT INTO named (name, child_name) VALUES ('secondcage', 'cage') 14/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (3)) 14/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (3)) 15/QueryIns: INSERT INTO cage (id, zoo_id, child_name) VALUES (3, 1, NULL) 15/QueryR : INSERT INTO cage (id, zoo_id, child_name) VALUES (3, 1, NULL) 16/QueryOne: SELECT zoo_id, child_name FROM cage WHERE ((cage.id) = (3)) 16/QueryR : SELECT zoo_id, child_name FROM cage WHERE ((cage.id) = (3)) 17/QueryIns: INSERT INTO named (name, child_name) VALUES ('tiger', 'animal') 17/QueryR : INSERT INTO named (name, child_name) VALUES ('tiger', 'animal') 18/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (4)) 18/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (4)) 19/QueryIns: INSERT INTO animal (id, cage_id, child_name) VALUES (4, 2, NULL) 19/QueryR : INSERT INTO animal (id, cage_id, child_name) VALUES (4, 2, NULL) 20/QueryOne: SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (4)) 20/QueryR : SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (4)) 21/QueryIns: INSERT INTO named (name, child_name) VALUES ('lion', 'animal') 21/QueryR : INSERT INTO named (name, child_name) VALUES ('lion', 'animal') 22/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (5)) 22/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (5)) 23/QueryIns: INSERT INTO animal (id, cage_id, child_name) VALUES (5, 2, NULL) 23/QueryR : INSERT INTO animal (id, cage_id, child_name) VALUES (5, 2, NULL) 24/QueryOne: SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (5)) 24/QueryR : SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (5)) 25/QueryIns: INSERT INTO named (name, child_name) VALUES ('croc', 'animal') 25/QueryR : INSERT INTO named (name, child_name) VALUES ('croc', 'animal') 26/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (6)) 26/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (6)) 27/QueryIns: INSERT INTO animal (id, cage_id, child_name) VALUES (6, 3, NULL) 27/QueryR : INSERT INTO animal (id, cage_id, child_name) VALUES (6, 3, NULL) 28/QueryOne: SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (6)) 28/QueryR : SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (6)) 29/QueryIns: INSERT INTO named (name, child_name) VALUES ('hypo', 'animal') 29/QueryR : INSERT INTO named (name, child_name) VALUES ('hypo', 'animal') 30/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (7)) 30/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (7)) 31/QueryIns: INSERT INTO animal (id, cage_id, child_name) VALUES (7, 3, NULL) 31/QueryR : INSERT INTO animal (id, cage_id, child_name) VALUES (7, 3, NULL) 32/QueryOne: SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (7)) 32/QueryR : SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (7)) 33/QueryIns: INSERT INTO named (name, child_name) VALUES ('fish', 'animal') 33/QueryR : INSERT INTO named (name, child_name) VALUES ('fish', 'animal') 34/QueryOne: SELECT name, child_name FROM named WHERE ((named.id) = (8)) 34/QueryR : SELECT name, child_name FROM named WHERE ((named.id) = (8)) 35/QueryIns: INSERT INTO animal (id, cage_id, child_name) VALUES (8, 3, NULL) 35/QueryR : INSERT INTO animal (id, cage_id, child_name) VALUES (8, 3, NULL) 36/QueryOne: SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (8)) 36/QueryR : SELECT cage_id, child_name FROM animal WHERE ((animal.id) = (8)) -------------------------------------------------------------------------------- 37/QueryOne: SELECT COUNT(*) FROM named LEFT JOIN cage ON ((animal.cage_id) = (cage.id)) LEFT JOIN zoo ON ((cage.zoo_id) = (zoo.id)) WHERE (((named.name) = ('myzoo')) AND ((named.child_name) = ('animal'))) 37/QueryR : SELECT COUNT(*) FROM named LEFT JOIN cage ON ((animal.cage_id) = (cage.id)) LEFT JOIN zoo ON ((cage.zoo_id) = (zoo.id)) WHERE (((named.name) = ('myzoo')) AND ((named.child_name) = ('animal'))) Traceback (most recent call last): File "dbtest.py", line 50, in <module> print animal.select( zoo.q.name=='myzoo', join=joins ).count( ) File "/usr/local/lib/python2.5/site-packages/SQLObject-0.10dev_r2716-py2.5.egg/sqlobject/sresults.py", line 222, in count count = self.accumulate('COUNT(*)') File "/usr/local/lib/python2.5/site-packages/SQLObject-0.10dev_r2716-py2.5.egg/sqlobject/sresults.py", line 207, in accumulate return conn.accumulateSelect(self, *exprs) File "/usr/local/lib/python2.5/site-packages/SQLObject-0.10dev_r2716-py2.5.egg/sqlobject/dbconnection.py", line 408, in accumulateSelect val = self.queryOne(q) File "/usr/local/lib/python2.5/site-packages/SQLObject-0.10dev_r2716-py2.5.egg/sqlobject/dbconnection.py", line 385, in queryOne return self._runWithConnection(self._queryOne, s) File "/usr/local/lib/python2.5/site-packages/SQLObject-0.10dev_r2716-py2.5.egg/sqlobject/dbconnection.py", line 255, in _runWithConnection val = meth(conn, *args) File "/usr/local/lib/python2.5/site-packages/SQLObject-0.10dev_r2716-py2.5.egg/sqlobject/dbconnection.py", line 378, in _queryOne self._executeRetry(conn, c, s) File "/usr/local/lib/python2.5/site-packages/SQLObject-0.10dev_r2716-py2.5.egg/sqlobject/sqlite/sqliteconnection.py", line 183, in _executeRetry raise OperationalError(ErrorMessage(e)) sqlobject.dberrors.OperationalError: no such column: animal.cage_id Daniel ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ sqlobject-discuss mailing list sqlobject-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss