On Jun 26, 2013, at 1:26 PM, Mat Mathews <m...@miga.me> wrote: > Thanks for the quick reply. > > If I modify the name of the sequence in the test, it reproduces what I have > experienced. > > When I check the details on the sequence in postgres, there is no table owner > or column specified by the sequence 'test_user_id_seq'.. and I would expect > to see both tables `a` and `b`. > > class IdMixin(object): > id = Column(Integer, Sequence('test_user_id_seq', start=10000), > primary_key=True) > > I will write a complete self contained test, that anyone can run. But wanted > to give my immediate feedback.
oh, you're looking for a linkage in PG's information schema I guess? Sequence() doesn't have that functionality. My understanding was that PG's SERIAL created the linkage as a "server default", so you can get this by adding this server default yourself, see below for demo: from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base, declared_attr Base = declarative_base() class IdMixin(object): id = Column(Integer, Sequence('some_id_seq', start=10000), server_default=text("nextval('some_id_seq')"), primary_key=True) class A(IdMixin, Base): __tablename__ = 'a' class B(IdMixin, Base): __tablename__ = 'b' e = create_engine("postgresql://scott:tiger@localhost/test", echo=True) Base.metadata.drop_all(e) Base.metadata.create_all(e) sess = Session(e) a1 = A() sess.add(a1) b1 = B() sess.add(b1) sess.commit() assert a1.id == 10000 assert b1.id == 10001 sess.execute("INSERT INTO b DEFAULT VALUES") assert sess.execute("SELECT * FROM b WHERE id=10002").scalar() > > Thanks so much, > Mat > > > On Jun 26, 2013, at 6:37 PM, Michael Bayer <mike...@zzzcomputing.com> wrote: > >> >> On Jun 26, 2013, at 12:02 PM, Mat Mathews <m...@miga.me> wrote: >> >>> I would like to do something like this: >>> >>> class User(object): >>> id = Column(Integer, Sequence('user_id_seq', start=10000), >>> primary_key=True) >>> >>> This does work, and emits the CREATE SEQUENCE, but does not set the owned >>> table or the column to user.id >> >> I'm not able to reproduce, even assigning the same sequence name to two >> different tables simultaneously produces the correct result. Can you modify >> the test below to illustrate your issue? >> >> from sqlalchemy import * >> from sqlalchemy.orm import * >> from sqlalchemy.ext.declarative import declarative_base, declared_attr >> >> Base = declarative_base() >> >> class IdMixin(object): >> id = Column(Integer, Sequence('user_id_seq', start=10000), >> primary_key=True) >> >> class A(IdMixin, Base): >> __tablename__ = 'a' >> >> class B(IdMixin, Base): >> __tablename__ = 'b' >> >> e = create_engine("postgresql://scott:tiger@localhost/test", echo=True) >> Base.metadata.drop_all(e) >> Base.metadata.create_all(e) >> >> sess = Session(e) >> >> a1 = A() >> sess.add(a1) >> >> b1 = B() >> sess.add(b1) >> sess.commit() >> >> assert a1.id == 10000 >> assert b1.id == 10001 >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sqlalchemy+unsubscr...@googlegroups.com. >> To post to this group, send email to sqlalchemy@googlegroups.com. >> Visit this group at http://groups.google.com/group/sqlalchemy. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/groups/opt_out. > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/groups/opt_out.