summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/suite/test_insert.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/testing/suite/test_insert.py')
-rw-r--r--lib/sqlalchemy/testing/suite/test_insert.py33
1 files changed, 26 insertions, 7 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_insert.py b/lib/sqlalchemy/testing/suite/test_insert.py
index e671eeb7a..5732e37ec 100644
--- a/lib/sqlalchemy/testing/suite/test_insert.py
+++ b/lib/sqlalchemy/testing/suite/test_insert.py
@@ -56,8 +56,9 @@ class LastrowidTest(fixtures.TablesTest):
[pk]
)
- @exclusions.fails_if(lambda: util.pypy, "lastrowid not maintained after "
- "connection close")
+ # failed on pypy1.9 but seems to be OK on pypy 2.1
+ #@exclusions.fails_if(lambda: util.pypy, "lastrowid not maintained after "
+ # "connection close")
@requirements.dbapi_lastrowid
def test_native_lastrowid_autoinc(self):
r = config.db.execute(
@@ -81,6 +82,10 @@ class InsertBehaviorTest(fixtures.TablesTest):
test_needs_autoincrement=True),
Column('data', String(50))
)
+ Table('manual_pk', metadata,
+ Column('id', Integer, primary_key=True, autoincrement=False),
+ Column('data', String(50))
+ )
def test_autoclose_on_insert(self):
if requirements.returning.enabled:
@@ -123,13 +128,13 @@ class InsertBehaviorTest(fixtures.TablesTest):
@requirements.insert_from_select
def test_insert_from_select(self):
- table = self.tables.autoinc_pk
+ table = self.tables.manual_pk
config.db.execute(
table.insert(),
[
- dict(data="data1"),
- dict(data="data2"),
- dict(data="data3"),
+ dict(id=1, data="data1"),
+ dict(id=2, data="data2"),
+ dict(id=3, data="data3"),
]
)
@@ -171,7 +176,8 @@ class ReturningTest(fixtures.TablesTest):
Column('data', String(50))
)
- def test_explicit_returning_pk(self):
+ @requirements.fetch_rows_post_commit
+ def test_explicit_returning_pk_autocommit(self):
engine = config.db
table = self.tables.autoinc_pk
r = engine.execute(
@@ -183,6 +189,19 @@ class ReturningTest(fixtures.TablesTest):
fetched_pk = config.db.scalar(select([table.c.id]))
eq_(fetched_pk, pk)
+ def test_explicit_returning_pk_no_autocommit(self):
+ engine = config.db
+ table = self.tables.autoinc_pk
+ with engine.begin() as conn:
+ r = conn.execute(
+ table.insert().returning(
+ table.c.id),
+ data="some data"
+ )
+ pk = r.first()[0]
+ fetched_pk = config.db.scalar(select([table.c.id]))
+ eq_(fetched_pk, pk)
+
def test_autoincrement_on_insert_implcit_returning(self):
config.db.execute(