Ah yes, I was using a different session without realizing it. Using the
same one fixed the problem, thank you.
On Tuesday, June 7, 2016 at 10:48:41 AM UTC-4, Mike Bayer wrote:
>
>
>
> On 06/07/2016 03:57 AM, Lukas Nabergall wrote:
> > In the unit tests for one module of my app, I'm using the following
> setup:
> >
> >
> > Any ideas on how to solve this would be greatly appreciated.
>
> Perhaps you are using a different session for the query. Here's your
> code fragment turned into a full test, runs fine here. Please alter it
> to show your error.
>
> from sqlalchemy import create_engine, Integer, Column
> from sqlalchemy.orm import scoped_session, sessionmaker
> from sqlalchemy.ext.declarative import declarative_base
> from unittest import TestCase, main
>
>
> Base = declarative_base()
>
>
> class Thing(Base):
> __tablename__ = 'thing'
> id = Column(Integer, primary_key=True)
>
>
> class SomeTestCase(TestCase):
> def __init__(self, *args, **kwargs):
> super(SomeTestCase, self).__init__(*args, **kwargs)
> self.engine = create_engine(
> "postgresql+psycopg2://scott:tiger@localhost/test",
> echo=True)
> self.session = scoped_session(sessionmaker(bind=self.engine))()
>
> def setUp(self):
> Base.metadata.create_all(self.engine)
> self.session.begin_nested()
>
> def tearDown(self):
> self.session.rollback()
> self.session.close()
> Base.metadata.drop_all(self.engine)
>
> def test_somefunction(self):
> self.session.begin_nested()
> try:
> object1 = Thing()
> self.session.add(object1)
> self.session.flush()
>
> object2 = Thing()
> self.session.add(object2)
> self.session.flush()
> self.session.commit()
> except:
> self.session.rollback()
> raise
> else:
> object_id = object2.id # Also works
> self.session.query(Thing).filter(Thing.id == object_id).one()
>
> main()
>
>
> output:
>
> 2016-06-07 10:47:20,740 INFO sqlalchemy.engine.base.Engine select
> version()
> 2016-06-07 10:47:20,740 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,741 INFO sqlalchemy.engine.base.Engine select
> current_schema()
> 2016-06-07 10:47:20,741 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,742 INFO sqlalchemy.engine.base.Engine SELECT
> CAST('test plain returns' AS VARCHAR(60)) AS anon_1
> 2016-06-07 10:47:20,743 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,743 INFO sqlalchemy.engine.base.Engine SELECT
> CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
> 2016-06-07 10:47:20,743 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,744 INFO sqlalchemy.engine.base.Engine show
> standard_conforming_strings
> 2016-06-07 10:47:20,744 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,746 INFO sqlalchemy.engine.base.Engine select
> relname from pg_class c join pg_namespace n on n.oid=c.relnamespace
> where pg_catalog.pg_table_is_visible(c.oid) and relname=%(name)s
> 2016-06-07 10:47:20,746 INFO sqlalchemy.engine.base.Engine {'name':
> u'thing'}
> 2016-06-07 10:47:20,747 INFO sqlalchemy.engine.base.Engine
> CREATE TABLE thing (
> id SERIAL NOT NULL,
> PRIMARY KEY (id)
> )
>
>
> 2016-06-07 10:47:20,747 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,753 INFO sqlalchemy.engine.base.Engine COMMIT
> 2016-06-07 10:47:20,757 INFO sqlalchemy.engine.base.Engine BEGIN
> (implicit)
> 2016-06-07 10:47:20,758 INFO sqlalchemy.engine.base.Engine SAVEPOINT
> sa_savepoint_1
> 2016-06-07 10:47:20,758 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,759 INFO sqlalchemy.engine.base.Engine SAVEPOINT
> sa_savepoint_2
> 2016-06-07 10:47:20,759 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,760 INFO sqlalchemy.engine.base.Engine INSERT INTO
> thing DEFAULT VALUES RETURNING thing.id
> 2016-06-07 10:47:20,760 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,761 INFO sqlalchemy.engine.base.Engine INSERT INTO
> thing DEFAULT VALUES RETURNING thing.id
> 2016-06-07 10:47:20,761 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,764 INFO sqlalchemy.engine.base.Engine RELEASE
> SAVEPOINT sa_savepoint_2
> 2016-06-07 10:47:20,764 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,767 INFO sqlalchemy.engine.base.Engine SELECT
> thing.id AS thing_id
> FROM thing
> WHERE thing.id = %(id_1)s
> 2016-06-07 10:47:20,767 INFO sqlalchemy.engine.base.Engine {'id_1': 2}
> 2016-06-07 10:47:20,769 INFO sqlalchemy.engine.base.Engine ROLLBACK TO
> SAVEPOINT sa_savepoint_1
> 2016-06-07 10:47:20,769 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,771 INFO sqlalchemy.engine.base.Engine ROLLBACK
> 2016-06-07 10:47:20,772 INFO sqlalchemy.engine.base.Engine select
> relname from pg_class c join pg_namespace n on n.oid=c.relnamespace
> where pg_catalog.pg_table_is_visible(c.oid) and relname=%(name)s
> 2016-06-07 10:47:20,772 INFO sqlalchemy.engine.base.Engine {'name':
> u'thing'}
> 2016-06-07 10:47:20,774 INFO sqlalchemy.engine.base.Engine
> DROP TABLE thing
> 2016-06-07 10:47:20,774 INFO sqlalchemy.engine.base.Engine {}
> 2016-06-07 10:47:20,777 INFO sqlalchemy.engine.base.Engine COMMIT
> .
> ----------------------------------------------------------------------
> Ran 1 test in 0.043s
>
> OK
>
>
>
> >
> >
> > --
> > 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 [email protected] <javascript:>
> > <mailto:[email protected] <javascript:>>.
> > To post to this group, send email to [email protected]
> <javascript:>
> > <mailto:[email protected] <javascript:>>.
> > Visit this group at https://groups.google.com/group/sqlalchemy.
> > For more options, visit https://groups.google.com/d/optout.
>
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.