Re: [Sqlalchemy-tickets] [sqlalchemy] #2896: fire_sequence logic can get tripped on a non-sequence
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2013-12-20 15:00:13
|
#2896: fire_sequence logic can get tripped on a non-sequence backend
---------------------------+-------------------------------
Reporter: zzzeek | Owner: zzzeek
Type: defect | Status: new
Priority: high | Milestone: 0.8.xx
Component: sql | Severity: major - 1-3 hours
Resolution: | Keywords:
Progress State: in queue |
---------------------------+-------------------------------
Changes (by zzzeek):
* severity: very major - up to 2 days => major - 1-3 hours
Old description:
> {{{
> #!python
> from sqlalchemy import *
> e = create_engine("sqlite://", echo=True)
> metadata = MetaData()
>
> task = Table('y', metadata,
> Column('set_id', Integer, primary_key=True)
> )
> dataset = Table("x", metadata,
> Column("set_id", Integer, Sequence("some_seq"), primary_key=True)
> )
>
> dataset.append_constraint(ForeignKeyConstraint([dataset.c.set_id],
> [task.c.set_id]))
>
> metadata.create_all(e)
>
> e.execute(dataset.insert())
> }}}
New description:
{{{
#!python
from sqlalchemy import *
e = create_engine("sqlite://", echo=True)
metadata = MetaData()
task = Table('y', metadata,
Column('set_id', Integer, primary_key=True)
)
dataset = Table("x", metadata,
Column("set_id", Integer, Sequence("some_seq"), primary_key=True)
)
dataset.append_constraint(ForeignKeyConstraint([dataset.c.set_id],
[task.c.set_id]))
metadata.create_all(e)
e.execute(dataset.insert())
}}}
{{{
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/engine/base.py", line
824, in _execute_context
context = constructor(dialect, self, conn, *args)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/engine/default.py",
line 512, in _init_compiled
self.__process_defaults()
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/engine/default.py",
line 892, in __process_defaults
val = self.get_insert_default(c)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/engine/default.py",
line 848, in get_insert_default
return self._exec_default(column.default, column.type)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/engine/default.py",
line 832, in _exec_default
return self.fire_sequence(default, type_)
sqlalchemy.exc.StatementError: 'SQLiteExecutionContext' object has no
attribute 'fire_sequence' (original cause: AttributeError:
'SQLiteExecutionContext' object has no attribute 'fire_sequence') u'INSERT
INTO x (set_id) VALUES (?)' []
}}}
--
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2896#comment:1>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|