MCPcopy Create free account
hub / github.com/zzzeek/sqlalchemy / test_limit_offset_applies

Method test_limit_offset_applies

test/orm/test_query.py:2843–2910  ·  view source on GitHub ↗

Test that the expected LIMIT/OFFSET is applied for slices. The LIMIT/OFFSET syntax differs slightly on all databases, and query[x:y] executes immediately, so we are asserting against SQL strings using sqlite's syntax.

(self)

Source from the content-addressed store, hash-verified

2841 eq_(q[-2:-5], [])
2842
2843 def test_limit_offset_applies(self):
2844 """Test that the expected LIMIT/OFFSET is applied for slices.
2845
2846 The LIMIT/OFFSET syntax differs slightly on all databases, and
2847 query[x:y] executes immediately, so we are asserting against
2848 SQL strings using sqlite's syntax.
2849
2850 """
2851
2852 User = self.classes.User
2853
2854 sess = fixture_session()
2855 q = sess.query(User).order_by(User.id)
2856
2857 self.assert_sql(
2858 testing.db,
2859 lambda: q[10:20],
2860 [
2861 (
2862 "SELECT users.id AS users_id, users.name "
2863 "AS users_name FROM users ORDER BY users.id "
2864 "LIMIT :param_1 OFFSET :param_2",
2865 {"param_1": 10, "param_2": 10},
2866 )
2867 ],
2868 )
2869
2870 self.assert_sql(
2871 testing.db,
2872 lambda: q[:20],
2873 [
2874 (
2875 "SELECT users.id AS users_id, users.name "
2876 "AS users_name FROM users ORDER BY users.id "
2877 "LIMIT :param_1",
2878 {"param_1": 20},
2879 )
2880 ],
2881 )
2882
2883 self.assert_sql(
2884 testing.db,
2885 lambda: q[5:],
2886 [
2887 (
2888 "SELECT users.id AS users_id, users.name "
2889 "AS users_name FROM users ORDER BY users.id "
2890 "LIMIT -1 OFFSET :param_1",
2891 {"param_1": 5},
2892 )
2893 ],
2894 )
2895
2896 self.assert_sql(testing.db, lambda: q[2:2], [])
2897
2898 self.assert_sql(testing.db, lambda: q[-2:-5], [])
2899
2900 self.assert_sql(

Callers

nothing calls this directly

Calls 4

fixture_sessionFunction · 0.90
assert_sqlMethod · 0.80
order_byMethod · 0.45
queryMethod · 0.45

Tested by

no test coverage detected