diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-02-08 10:12:33 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-02-08 10:12:33 -0500 |
commit | c2aa6374f3965c28aa2d56cbddf6dab3e1de18a2 (patch) | |
tree | 06e74da251a00d34ba79326266326a9f8928eb52 /test/dialect/oracle/test_dialect.py | |
parent | 15e37d5e540439439009cc2ea0f9421114c21909 (diff) | |
download | sqlalchemy-c2aa6374f3965c28aa2d56cbddf6dab3e1de18a2.tar.gz |
Accommodate escaped_bind_names for defaults/insert params
Fixed issue in Oracle dialect where using a column name that requires
quoting when written as a bound parameter, such as ``"_id"``, would not
correctly track a Python generated default value due to the bound-parameter
rewriting missing this value, causing an Oracle error to be raised.
Fixes: #7676
Change-Id: I5a54426d24f2f9b336e3597d5595fb3e031aad97
Diffstat (limited to 'test/dialect/oracle/test_dialect.py')
-rw-r--r-- | test/dialect/oracle/test_dialect.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/dialect/oracle/test_dialect.py b/test/dialect/oracle/test_dialect.py index c06baace0..5383ffc0c 100644 --- a/test/dialect/oracle/test_dialect.py +++ b/test/dialect/oracle/test_dialect.py @@ -490,6 +490,35 @@ class QuotedBindRoundTripTest(fixtures.TestBase): dict(uid=[1, 2, 3]), ) + @testing.combinations(True, False, argnames="executemany") + def test_python_side_default(self, metadata, connection, executemany): + """test #7676""" + + ids = ["a", "b", "c"] + + def gen_id(): + return ids.pop(0) + + t = Table( + "has_id", + metadata, + Column("_id", String(50), default=gen_id, primary_key=True), + Column("_data", Integer), + ) + metadata.create_all(connection) + + if executemany: + result = connection.execute( + t.insert(), [{"_data": 27}, {"_data": 28}, {"_data": 29}] + ) + eq_( + connection.execute(t.select().order_by(t.c._id)).all(), + [("a", 27), ("b", 28), ("c", 29)], + ) + else: + result = connection.execute(t.insert(), {"_data": 27}) + eq_(result.inserted_primary_key, ("a",)) + class CompatFlagsTest(fixtures.TestBase, AssertsCompiledSQL): def _dialect(self, server_version, **kw): |