summaryrefslogtreecommitdiff
path: root/test/orm/test_query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-10-20 12:50:53 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2021-10-25 12:09:41 -0400
commit92aa35e7fc737de58c25d6c22bf1c48f6c4c714b (patch)
treef3c46d6d198441bb7f8ca7e8a7b2322b26491782 /test/orm/test_query.py
parent605d0d905855684bfe4409532af98f336ae38f82 (diff)
downloadsqlalchemy-92aa35e7fc737de58c25d6c22bf1c48f6c4c714b.tar.gz
deprecation warnings: strings in loader options, join, with_parent
Repairs one in-library deprecation warning regarding mapper propagation of options raises maxfail to 250, as 25 is too low when we are trying to address many errors at once. the 25 was originally due to the fact that our fixtures would be broken after that many failures in most cases, which today should not be the case nearly as often. Change-Id: I26affddf42e2cae2aaf9561633e9b8cd431eb189
Diffstat (limited to 'test/orm/test_query.py')
-rw-r--r--test/orm/test_query.py146
1 files changed, 58 insertions, 88 deletions
diff --git a/test/orm/test_query.py b/test/orm/test_query.py
index 3e58f211c..c9353f551 100644
--- a/test/orm/test_query.py
+++ b/test/orm/test_query.py
@@ -1340,7 +1340,7 @@ class GetTest(QueryTest):
s = fixture_session()
- q = s.query(User).join("addresses").filter(Address.user_id == 8)
+ q = s.query(User).join(User.addresses).filter(Address.user_id == 8)
assert_raises(sa_exc.InvalidRequestError, q.get, 7)
assert_raises(
sa_exc.InvalidRequestError,
@@ -1361,7 +1361,7 @@ class GetTest(QueryTest):
s.query(User).get(7)
- q = s.query(User).join("addresses").filter(Address.user_id == 8)
+ q = s.query(User).join(User.addresses).filter(Address.user_id == 8)
assert_raises(sa_exc.InvalidRequestError, q.get, 7)
def test_unique_param_names(self):
@@ -1428,6 +1428,7 @@ class GetTest(QueryTest):
def test_populate_existing(self):
User, Address = self.classes.User, self.classes.Address
+ Order = self.classes.Order
s = fixture_session(autoflush=False)
@@ -1457,13 +1458,15 @@ class GetTest(QueryTest):
# eager load does
s.query(User).options(
- joinedload("addresses"), joinedload("orders").joinedload("items")
+ joinedload(User.addresses),
+ joinedload(User.orders).joinedload(Order.items),
).populate_existing().all()
assert u.addresses[0].email_address == "jack@bean.com"
assert u.orders[1].items[2].description == "item 5"
def test_populate_existing_future(self):
User, Address = self.classes.User, self.classes.Address
+ Order = self.classes.Order
s = fixture_session(autoflush=False)
@@ -1500,8 +1503,8 @@ class GetTest(QueryTest):
stmt = (
select(User)
.options(
- joinedload("addresses"),
- joinedload("orders").joinedload("items"),
+ joinedload(User.addresses),
+ joinedload(User.orders).joinedload(Order.items),
)
.execution_options(populate_existing=True)
)
@@ -1545,7 +1548,7 @@ class InvalidGenerationsTest(QueryTest, AssertsCompiledSQL):
q = testing.resolve_lambda(test_case, User=User, s=s)
- assert_raises(sa_exc.InvalidRequestError, q.join, "addresses")
+ assert_raises(sa_exc.InvalidRequestError, q.join, User.addresses)
assert_raises(sa_exc.InvalidRequestError, q.filter, User.name == "ed")
@@ -1557,7 +1560,7 @@ class InvalidGenerationsTest(QueryTest, AssertsCompiledSQL):
assert_raises(sa_exc.InvalidRequestError, q.having, "foo")
- q.enable_assertions(False).join("addresses")
+ q.enable_assertions(False).join(User.addresses)
q.enable_assertions(False).filter(User.name == "ed")
q.enable_assertions(False).order_by("foo")
q.enable_assertions(False).group_by("foo")
@@ -1570,7 +1573,7 @@ class InvalidGenerationsTest(QueryTest, AssertsCompiledSQL):
q = s.query(User).select_from(users)
assert_raises(sa_exc.InvalidRequestError, q.select_from, users)
- q = s.query(User).join("addresses")
+ q = s.query(User).join(User.addresses)
assert_raises(sa_exc.InvalidRequestError, q.select_from, users)
q = s.query(User).order_by(User.id)
@@ -3360,13 +3363,13 @@ class FilterTest(QueryTest, AssertsCompiledSQL):
# test that the contents are not adapted by the aliased join
ua = aliased(Address)
assert [User(id=7), User(id=8)] == sess.query(User).join(
- ua, "addresses"
+ ua, User.addresses
).filter(
~User.addresses.any(Address.email_address == "fred@fred.com")
).all()
assert [User(id=10)] == sess.query(User).outerjoin(
- ua, "addresses"
+ ua, User.addresses
).filter(~User.addresses.any()).all()
def test_any_doesnt_overcorrelate(self):
@@ -3378,7 +3381,7 @@ class FilterTest(QueryTest, AssertsCompiledSQL):
# test that any() doesn't overcorrelate
assert [User(id=7), User(id=8)] == sess.query(User).join(
- "addresses"
+ User.addresses
).filter(
~User.addresses.any(Address.email_address == "fred@fred.com")
).all()
@@ -3417,7 +3420,7 @@ class FilterTest(QueryTest, AssertsCompiledSQL):
# test has() doesn't overcorrelate
assert [Address(id=2), Address(id=3), Address(id=4)] == sess.query(
Address
- ).join("user").filter(
+ ).join(Address.user).filter(
Address.user.has(User.name.like("%ed%"), id=8)
).order_by(
Address.id
@@ -3427,7 +3430,7 @@ class FilterTest(QueryTest, AssertsCompiledSQL):
ua = aliased(User)
assert [Address(id=2), Address(id=3), Address(id=4)] == sess.query(
Address
- ).join(ua, "user").filter(
+ ).join(ua, Address.user).filter(
Address.user.has(User.name.like("%ed%"), id=8)
).order_by(
Address.id
@@ -4409,7 +4412,7 @@ class AggregateTest(QueryTest):
sess = fixture_session()
assert [User(name="ed", id=8)] == sess.query(User).order_by(
User.id
- ).group_by(User).join("addresses").having(
+ ).group_by(User).join(User.addresses).having(
func.count(Address.id) > 2
).all()
@@ -4417,7 +4420,7 @@ class AggregateTest(QueryTest):
User(name="jack", id=7),
User(name="fred", id=9),
] == sess.query(User).order_by(User.id).group_by(User).join(
- "addresses"
+ User.addresses
).having(
func.count(Address.id) < 2
).all()
@@ -4828,7 +4831,7 @@ class DistinctTest(QueryTest, AssertsCompiledSQL):
subq = (
sess.query(User, Address.email_address)
- .join("addresses")
+ .join(User.addresses)
.distinct()
.subquery()
)
@@ -4850,7 +4853,7 @@ class DistinctTest(QueryTest, AssertsCompiledSQL):
sess = fixture_session()
q = (
sess.query(User, Address.email_address)
- .join("addresses")
+ .join(User.addresses)
.distinct()
)
@@ -4875,9 +4878,9 @@ class DistinctTest(QueryTest, AssertsCompiledSQL):
# test that it works on embedded joinedload/LIMIT subquery
q = (
sess.query(User)
- .join("addresses")
+ .join(User.addresses)
.distinct()
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by(desc(Address.email_address))
.limit(2)
)
@@ -5227,9 +5230,9 @@ class DistinctTest(QueryTest, AssertsCompiledSQL):
q = (
sess.query(User)
- .join("addresses")
+ .join(User.addresses)
.distinct(Address.email_address)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by(desc(Address.email_address))
.limit(2)
)
@@ -5407,7 +5410,7 @@ class YieldTest(_fixtures.FixtureTest):
User = self.classes.User
sess = fixture_session()
- q = sess.query(User).options(joinedload("addresses")).yield_per(1)
+ q = sess.query(User).options(joinedload(User.addresses)).yield_per(1)
assert_raises_message(
sa_exc.InvalidRequestError,
"Can't use yield_per with eager loaders that require "
@@ -5420,7 +5423,7 @@ class YieldTest(_fixtures.FixtureTest):
User = self.classes.User
sess = fixture_session()
- q = sess.query(User).options(subqueryload("addresses")).yield_per(1)
+ q = sess.query(User).options(subqueryload(User.addresses)).yield_per(1)
assert_raises_message(
sa_exc.InvalidRequestError,
"Can't use yield_per with eager loaders that require "
@@ -5455,7 +5458,7 @@ class YieldTest(_fixtures.FixtureTest):
sess = fixture_session()
q = (
sess.query(User)
- .options(subqueryload("addresses"))
+ .options(subqueryload(User.addresses))
.enable_eagerloads(False)
.yield_per(1)
)
@@ -5463,7 +5466,7 @@ class YieldTest(_fixtures.FixtureTest):
q = (
sess.query(User)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.enable_eagerloads(False)
.yield_per(1)
)
@@ -5475,7 +5478,7 @@ class YieldTest(_fixtures.FixtureTest):
sess = fixture_session()
q = (
sess.query(Address)
- .options(lazyload("*"), joinedload("user"))
+ .options(lazyload("*"), joinedload(Address.user))
.yield_per(1)
.filter_by(id=1)
)
@@ -6154,7 +6157,7 @@ class TextTest(QueryTest, AssertsCompiledSQL):
q = (
s.query(User)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by(desc("name"))
.limit(1)
)
@@ -6172,7 +6175,7 @@ class TextTest(QueryTest, AssertsCompiledSQL):
q = (
s.query(User)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by("name")
.limit(1)
)
@@ -6190,7 +6193,7 @@ class TextTest(QueryTest, AssertsCompiledSQL):
self.assert_compile(
s.query(User)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by("users_name")
.limit(1),
"SELECT anon_1.users_id AS anon_1_users_id, "
@@ -6209,7 +6212,7 @@ class TextTest(QueryTest, AssertsCompiledSQL):
# however! this works (again?)
eq_(
s.query(User)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by("users_name")
.first(),
User(name="chuck", addresses=[]),
@@ -6222,7 +6225,7 @@ class TextTest(QueryTest, AssertsCompiledSQL):
self.assert_compile(
s.query(User)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by(desc("users_name"))
.limit(1),
"SELECT anon_1.users_id AS anon_1_users_id, "
@@ -6241,7 +6244,7 @@ class TextTest(QueryTest, AssertsCompiledSQL):
# however! this works (again?)
eq_(
s.query(User)
- .options(joinedload("addresses"))
+ .options(joinedload(User.addresses))
.order_by(desc("users_name"))
.first(),
User(name="jack", addresses=[Address()]),
@@ -6260,7 +6263,7 @@ class TextTest(QueryTest, AssertsCompiledSQL):
q = sess.query(User, Address.email_address.label("email_address"))
result = (
- q.join("addresses")
+ q.join(User.addresses)
.options(joinedload(User.orders))
.order_by("email_address desc")
.limit(1)
@@ -6330,13 +6333,6 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
] == o
# test with explicit property
- o = sess.query(Order).with_parent(u1, property="orders").all()
- assert [
- Order(description="order 1"),
- Order(description="order 3"),
- Order(description="order 5"),
- ] == o
-
o = sess.query(Order).with_parent(u1, property=User.orders).all()
assert [
Order(description="order 1"),
@@ -6385,7 +6381,7 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
sess = fixture_session()
u1 = sess.query(User).get(7)
q = sess.query(User, Address).filter(
- with_parent(u1, "addresses", from_entity=Address)
+ with_parent(u1, User.addresses, from_entity=Address)
)
self.assert_compile(
q,
@@ -6404,7 +6400,7 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
sess = fixture_session()
u1 = sess.query(User).get(7)
q = sess.query(User, Address).with_parent(
- u1, "addresses", from_entity=Address
+ u1, User.addresses, from_entity=Address
)
self.assert_compile(
q,
@@ -6440,7 +6436,7 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
sess = fixture_session()
u1 = sess.query(User).get(7)
a1 = aliased(Address)
- q = sess.query(a1).with_parent(u1, "addresses")
+ q = sess.query(a1).with_parent(u1, User.addresses)
self.assert_compile(
q,
"SELECT addresses_1.id AS addresses_1_id, "
@@ -6530,7 +6526,7 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
q = sess.query(User)
u1 = q.filter_by(name="jack").one()
utrans = User(id=u1.id)
- o = sess.query(Order).with_parent(utrans, "orders")
+ o = sess.query(Order).with_parent(utrans, User.orders)
eq_(
[
Order(description="order 1"),
@@ -6540,7 +6536,7 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
o.all(),
)
- o = sess.query(Order).filter(with_parent(utrans, "orders"))
+ o = sess.query(Order).filter(with_parent(utrans, User.orders))
eq_(
[
Order(description="order 1"),
@@ -6559,11 +6555,11 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
opending = Order(id=20, user_id=o1.user_id)
sess.add(opending)
eq_(
- sess.query(User).with_parent(opending, "user").one(),
+ sess.query(User).with_parent(opending, Order.user).one(),
User(id=o1.user_id),
)
eq_(
- sess.query(User).filter(with_parent(opending, "user")).one(),
+ sess.query(User).filter(with_parent(opending, Order.user)).one(),
User(id=o1.user_id),
)
@@ -6576,7 +6572,7 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
opending = Order(user_id=o1.user_id)
sess.add(opending)
eq_(
- sess.query(User).with_parent(opending, "user").one(),
+ sess.query(User).with_parent(opending, Order.user).one(),
User(id=o1.user_id),
)
@@ -6587,8 +6583,8 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
sess = fixture_session()
u1, u2 = sess.query(User).order_by(User.id)[0:2]
- q1 = sess.query(Address).with_parent(u1, "addresses")
- q2 = sess.query(Address).with_parent(u2, "addresses")
+ q1 = sess.query(Address).with_parent(u1, User.addresses)
+ q2 = sess.query(Address).with_parent(u2, User.addresses)
self.assert_compile(
q1.union(q2),
@@ -6614,7 +6610,10 @@ class ParentTest(QueryTest, AssertsCompiledSQL):
self.assert_compile(
sess.query(Address).filter(
- or_(with_parent(u1, "addresses"), with_parent(u2, "addresses"))
+ or_(
+ with_parent(u1, User.addresses),
+ with_parent(u2, User.addresses),
+ )
),
"SELECT addresses.id AS addresses_id, addresses.user_id AS "
"addresses_user_id, addresses.email_address AS "
@@ -6832,7 +6831,7 @@ class WithTransientOnNone(_fixtures.FixtureTest, AssertsCompiledSQL):
sess = fixture_session()
- q = sess.query(User).with_parent(Address(user_id=None), "user")
+ q = sess.query(User).with_parent(Address(user_id=None), Address.user)
with expect_warnings("Got None for value of column"):
self.assert_compile(
q,
@@ -6847,7 +6846,7 @@ class WithTransientOnNone(_fixtures.FixtureTest, AssertsCompiledSQL):
s = fixture_session()
q = s.query(User).with_parent(
- Address(user_id=None, email_address=None), "special_user"
+ Address(user_id=None, email_address=None), Address.special_user
)
with expect_warnings("Got None for value of column"):
@@ -7025,35 +7024,6 @@ class SynonymTest(QueryTest, AssertsCompiledSQL):
self.assert_sql_count(testing.db, go, 1)
- def test_options_syn_of_syn_string(self):
- User, Order = self.classes.User, self.classes.Order
-
- s = fixture_session()
-
- def go():
- result = (
- s.query(User)
- .filter_by(name="jack")
- .options(joinedload("orders_syn_2"))
- .all()
- )
- eq_(
- result,
- [
- User(
- id=7,
- name="jack",
- orders=[
- Order(description="order 1"),
- Order(description="order 3"),
- Order(description="order 5"),
- ],
- )
- ],
- )
-
- self.assert_sql_count(testing.db, go, 1)
-
def test_joins(self):
User, Order = self.classes.User, self.classes.Order
@@ -7084,12 +7054,12 @@ class SynonymTest(QueryTest, AssertsCompiledSQL):
Order, User = self.classes.Order, self.classes.User
for nameprop, orderprop in (
- ("name", "orders"),
- ("name_syn", "orders"),
- ("name", "orders_syn"),
- ("name", "orders_syn_2"),
- ("name_syn", "orders_syn"),
- ("name_syn", "orders_syn_2"),
+ ("name", User.orders),
+ ("name_syn", User.orders),
+ ("name", User.orders_syn),
+ ("name", User.orders_syn_2),
+ ("name_syn", User.orders_syn),
+ ("name_syn", User.orders_syn_2),
):
with fixture_session() as sess:
q = sess.query(User)