- changed status to wontfix
missing is_scalar on Sequence
I'm using SA 0.7.3 on Postgresql 8.4. The sequence is defined as:
id = sa.Column('id', sa.Integer, sa.Sequence('table_id_seq'), primary_key=True)
When insert into an empty table I get the error below. If I added an is_scalar attribute manually to DefaultGenerator then everything seems to work but I'm not sure if this is the right way.
File "./bauble/plugins/imex/csv_.py", line 487, in run do_insert() File "./bauble/plugins/imex/csv_.py", line 434, in do_insert connection.execute(insert, values) File "/home/brett/.virtualenvs/bauble-trunk/lib/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-i686.egg/sqlalchemy/engine/base.py", line 1399, in execute params) File "/home/brett/.virtualenvs/bauble-trunk/lib/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-i686.egg/sqlalchemy/engine/base.py", line 1554, in _execute_compiled compiled, parameters File "/home/brett/.virtualenvs/bauble-trunk/lib/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-i686.egg/sqlalchemy/engine/base.py", line 1599, in _execute_context None, None) File "/home/brett/.virtualenvs/bauble-trunk/lib/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-i686.egg/sqlalchemy/engine/base.py", line 1595, in _execute_context context = constructor(dialect, self, conn, args) File "/home/brett/.virtualenvs/bauble-trunk/lib/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-i686.egg/sqlalchemy/engine/default.py", line 440, in _init_compiled self.__process_defaults() File "/home/brett/.virtualenvs/bauble-trunk/lib/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-i686.egg/sqlalchemy/engine/default.py", line 767, in __process_defaults if self.isinsert and c.default and c.default.is_scalar(): StatementError: 'Sequence' object has no attribute 'is_scalar' (original cause: AttributeError: 'Sequence' object has no attribute 'is_scalar') 'INSERT INTO habit (name, code, id, _created, _last_updated) VALUES (%(name)s, %(code)s, %(id)s, %(_created)s, %(_last_updated)s)' ({'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'AQU', 'name': u'Aquatic'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'CAC', 'name': u'Cactus'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'CLI_D', 'name': u'Climber, Deciduous'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'CLI_E', 'name': u'Climber, Evergreen'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'EPI', 'name': u'Epiphyte'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'FER', 'name': u'Fern'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'GRASS', 'name': u'Grass'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'GCV_D', 'name': u'Ground Cover, Deciduous'} ... displaying 10 of 37 total bound parameter sets ... {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'VIN', 'name': u'Vine'}, {'_created': datetime.datetime(2011, 10, 18, 14, 45, 11, 131138, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), '_last_updated': datetime.datetime(2011, 10, 18, 14, 45, 11, 132150, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=1200, name=None)), 'code': u'WET', 'name': u'Wetland Plant'})
Comments (3)
-
repo owner -
repo owner here's that test case:
from sqlalchemy import * e = create_engine("postgresql://scott:tiger@localhost/test", echo=True) t = Table('t', MetaData(e), Column('id', Integer, Sequence('table_id_seq'), primary_key=True) , Column('code', String(50)) ) t.drop(checkfirst=True) t.create(e) i = t.insert() e.execute(i, [{'code':'c2'}, {'code':'c3'}]({'code':'c1'},))
-
repo owner and some output...
2011-10-18 15:15:18,635 INFO sqlalchemy.engine.base.Engine select version() 2011-10-18 15:15:18,635 INFO sqlalchemy.engine.base.Engine {} 2011-10-18 15:15:18,636 INFO sqlalchemy.engine.base.Engine select current_schema() 2011-10-18 15:15:18,636 INFO sqlalchemy.engine.base.Engine {} 2011-10-18 15:15:18,638 INFO sqlalchemy.engine.base.Engine select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace where n.nspname=current_schema() and relname=%(name)s 2011-10-18 15:15:18,638 INFO sqlalchemy.engine.base.Engine {'name': u't'} 2011-10-18 15:15:18,640 INFO sqlalchemy.engine.base.Engine SELECT relname FROM pg_class c join pg_namespace n on n.oid=c.relnamespace where relkind='S' and n.nspname=current_schema() and relname=%(name)s 2011-10-18 15:15:18,640 INFO sqlalchemy.engine.base.Engine {'name': u'table_id_seq'} 2011-10-18 15:15:18,641 INFO sqlalchemy.engine.base.Engine DROP SEQUENCE table_id_seq 2011-10-18 15:15:18,641 INFO sqlalchemy.engine.base.Engine {} 2011-10-18 15:15:18,642 INFO sqlalchemy.engine.base.Engine COMMIT 2011-10-18 15:15:18,643 INFO sqlalchemy.engine.base.Engine DROP TABLE t 2011-10-18 15:15:18,643 INFO sqlalchemy.engine.base.Engine {} 2011-10-18 15:15:18,644 INFO sqlalchemy.engine.base.Engine COMMIT 2011-10-18 15:15:18,645 INFO sqlalchemy.engine.base.Engine CREATE SEQUENCE table_id_seq 2011-10-18 15:15:18,645 INFO sqlalchemy.engine.base.Engine {} 2011-10-18 15:15:18,646 INFO sqlalchemy.engine.base.Engine COMMIT 2011-10-18 15:15:18,647 INFO sqlalchemy.engine.base.Engine CREATE TABLE t ( id INTEGER NOT NULL, code VARCHAR(50), PRIMARY KEY (id) ) 2011-10-18 15:15:18,647 INFO sqlalchemy.engine.base.Engine {} 2011-10-18 15:15:18,649 INFO sqlalchemy.engine.base.Engine COMMIT 2011-10-18 15:15:18,650 INFO sqlalchemy.engine.base.Engine INSERT INTO t (id, code) VALUES (nextval('table_id_seq'), %(code)s) 2011-10-18 15:15:18,650 INFO sqlalchemy.engine.base.Engine ({'code': 'c1'}, {'code': 'c2'}, {'code': 'c3'}) 2011-10-18 15:15:18,651 INFO sqlalchemy.engine.base.Engine COMMIT
- Log in to comment
there's no test case attached here so I cannot reproduce. A simple script obviously works as this is an extremely basic SQLAlchemy function:
please reopen once you can provide more specifics, thanks.