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 sqlalchemy+...@googlegroups.com <javascript:> 
> > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>. 
> > To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:> 
> > <mailto:sqlal...@googlegroups.com <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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to