Ya the error changed, now I get a different one (probably oracle specific) see
atachment.


Quoting Michael Bayer <[EMAIL PROTECTED]>:

> this works with SQLite and should be working with Oracle as I
> repaired that bug.
>
> On Mar 21, 2006, at 7:45 AM, Florian Boesch wrote:
>
> > Testing a previous bug I noticed that somemapper.get_by and
> > inheritance stopped
> > working (this refers to the trackeback from inheritance in 1117).
> >
> > A test programm reproducing the error is atached.
> >
> > Cheers,
> > Florian
> > <get_by and inheritance.py>
>
>


from sqlalchemy import *

engine = create_engine('oracle://dsn=orcl&user=test&password=test')

foo = Table('foo', engine, Column('id', Integer, Sequence('foo_seq'), 
primary_key=True))
bar = Table('bar', engine, Column('id', Integer, ForeignKey('foo.id'), 
primary_key=True))

class Foo(object): pass
class Bar(object): pass

foos = mapper(Foo, foo)
bars = mapper(Bar, bar, inherits=foos)

tables = foo, bar

for table in reversed(tables):
    try: table.drop()
    except: pass
for table in tables:
    try: table.create()
    except: pass

assert foos.selectfirst() == None
foo.insert().execute()
assert foos.selectfirst() != None
assert bars.selectfirst() == None # fails exception #1
assert bars.get_by(id=1) == None # fails exception #2
assert bars.selectfirst_by(id=1) == None # fails exception #3
bar.insert().execute(id=1)
assert bars.selectfirst() != None # fails exception #1
assert bars.get_by(id=1) != None # fails exception #2
assert bars.selectfirst_by(id=1) != None # fails exception #3

# exception #1
'''
Traceback (most recent call last):
  File "selectfirst.py", line 22, in ?
    assert bars.selectfirst() == None # fails exception #1
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 485, in selectfirst
    ret = self.select(*args, **params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 511, in select
    return self.select_whereclause(arg, **kwargs)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 515, in select_whereclause
    return self._select_statement(statement, params=params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 535, in _select_statement
    return self.instances(statement.execute(**params), **kwargs)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/sql.py",
 line 436, in execute
    return c.execute(*multiparams, **params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/sql.py",
 line 330, in execute
    return self.engine.execute_compiled(self, params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 643, in execute_compiled
    proxy(str(compiled), parameters)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 638, in proxy
    self.execute(statement, parameters, connection=connection, cursor=cursor, 
return_raw=True)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 689, in execute
    self._execute(cursor, statement, parameters)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 709, in _execute
    raise exceptions.SQLError(statement, parameters, e)
sqlalchemy.exceptions.SQLError: (DatabaseError) ORA-00904: "NONE"."ROWID": 
invalid identifier
 'SELECT bar_id, foo_id \nFROM (SELECT bar.id AS bar_id, foo.id AS foo_id, 
ROW_NUMBER() OVER (ORDER BY None.rowid ASC) AS ora_rn \nFROM foo JOIN bar ON 
foo.id = bar.id) \nWHERE ora_rn<=1' {}
'''

# exception #2
'''
Traceback (most recent call last):
  File "selectfirst.py", line 23, in ?
    assert bars.get_by(id=1) == None # fails exception #2
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 394, in get_by
    x = self.select_whereclause(self._by_clause(*args, **params), limit=1)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 515, in select_whereclause
    return self._select_statement(statement, params=params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 535, in _select_statement
    return self.instances(statement.execute(**params), **kwargs)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/sql.py",
 line 436, in execute
    return c.execute(*multiparams, **params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/sql.py",
 line 330, in execute
    return self.engine.execute_compiled(self, params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 643, in execute_compiled
    proxy(str(compiled), parameters)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 638, in proxy
    self.execute(statement, parameters, connection=connection, cursor=cursor, 
return_raw=True)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 689, in execute
    self._execute(cursor, statement, parameters)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 709, in _execute
    raise exceptions.SQLError(statement, parameters, e)
sqlalchemy.exceptions.SQLError: (DatabaseError) ORA-00904: "NONE"."ROWID": 
invalid identifier
 'SELECT bar_id, foo_id \nFROM (SELECT bar.id AS bar_id, foo.id AS foo_id, 
ROW_NUMBER() OVER (ORDER BY None.rowid ASC) AS ora_rn \nFROM foo JOIN bar ON 
foo.id = bar.id \nWHERE bar.id = :bar_id) \nWHERE ora_rn<=1' {'bar_id': 1}
'''

# exception #3
'''
Traceback (most recent call last):
  File "selectfirst.py", line 24, in ?
    assert bars.selectfirst_by(id=1) == None # fails exception #3
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 418, in selectfirst_by
    return self.get_by(*args, **params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 394, in get_by
    x = self.select_whereclause(self._by_clause(*args, **params), limit=1)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 515, in select_whereclause
    return self._select_statement(statement, params=params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/mapping/mapper.py",
 line 535, in _select_statement
    return self.instances(statement.execute(**params), **kwargs)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/sql.py",
 line 436, in execute
    return c.execute(*multiparams, **params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/sql.py",
 line 330, in execute
    return self.engine.execute_compiled(self, params)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 643, in execute_compiled
    proxy(str(compiled), parameters)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 638, in proxy
    self.execute(statement, parameters, connection=connection, cursor=cursor, 
return_raw=True)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 689, in execute
    self._execute(cursor, statement, parameters)
  File 
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.4-py2.4.egg/sqlalchemy/engine.py",
 line 709, in _execute
    raise exceptions.SQLError(statement, parameters, e)
sqlalchemy.exceptions.SQLError: (DatabaseError) ORA-00904: "NONE"."ROWID": 
invalid identifier
 'SELECT bar_id, foo_id \nFROM (SELECT bar.id AS bar_id, foo.id AS foo_id, 
ROW_NUMBER() OVER (ORDER BY None.rowid ASC) AS ora_rn \nFROM foo JOIN bar ON 
foo.id = bar.id \nWHERE bar.id = :bar_id) \nWHERE ora_rn<=1' {'bar_id': 1}
'''

Reply via email to