Coverage for sqlmodel/orm/session.py: 100%
25 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-24 00:02 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-24 00:02 +0000
1from typing import ( 1abcdef
2 Any,
3 Dict,
4 Mapping,
5 Optional,
6 Sequence,
7 TypeVar,
8 Union,
9 overload,
10)
12from sqlalchemy import util 1abcdef
13from sqlalchemy.engine.interfaces import _CoreAnyExecuteParams 1abcdef
14from sqlalchemy.engine.result import Result, ScalarResult, TupleResult 1abcdef
15from sqlalchemy.orm import Query as _Query 1abcdef
16from sqlalchemy.orm import Session as _Session 1abcdef
17from sqlalchemy.orm._typing import OrmExecuteOptionsParameter 1abcdef
18from sqlalchemy.sql._typing import _ColumnsClauseArgument 1abcdef
19from sqlalchemy.sql.base import Executable as _Executable 1abcdef
20from sqlmodel.sql.base import Executable 1abcdef
21from sqlmodel.sql.expression import Select, SelectOfScalar 1abcdef
22from typing_extensions import deprecated 1abcdef
24_TSelectParam = TypeVar("_TSelectParam", bound=Any) 1abcdef
27class Session(_Session): 1abcdef
28 @overload 1abcdef
29 def exec( 1abcdef
30 self,
31 statement: Select[_TSelectParam], 1abcdef
32 *,
33 params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, 1abcdef
34 execution_options: Mapping[str, Any] = util.EMPTY_DICT, 1abcdef
35 bind_arguments: Optional[Dict[str, Any]] = None, 1abcdef
36 _parent_execute_state: Optional[Any] = None, 1abcdef
37 _add_event: Optional[Any] = None, 1abcdef
38 ) -> TupleResult[_TSelectParam]: ... 1abcdef
40 @overload 1abcdef
41 def exec( 1abcdef
42 self,
43 statement: SelectOfScalar[_TSelectParam], 1abcdef
44 *,
45 params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, 1abcdef
46 execution_options: Mapping[str, Any] = util.EMPTY_DICT, 1abcdef
47 bind_arguments: Optional[Dict[str, Any]] = None, 1abcdef
48 _parent_execute_state: Optional[Any] = None, 1abcdef
49 _add_event: Optional[Any] = None, 1abcdef
50 ) -> ScalarResult[_TSelectParam]: ... 1abcdef
52 def exec( 1abcdef
53 self,
54 statement: Union[
55 Select[_TSelectParam],
56 SelectOfScalar[_TSelectParam],
57 Executable[_TSelectParam],
58 ],
59 *,
60 params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None,
61 execution_options: Mapping[str, Any] = util.EMPTY_DICT,
62 bind_arguments: Optional[Dict[str, Any]] = None,
63 _parent_execute_state: Optional[Any] = None,
64 _add_event: Optional[Any] = None,
65 ) -> Union[TupleResult[_TSelectParam], ScalarResult[_TSelectParam]]:
66 results = super().execute( 21f2fg 3f4fh i j k l m n o p q r s t u v w x y z A B 5f6f7f8f9f!f#f$f%fC D 'f(f)fE F *f+fG H I J K L M N O ,f-f.f/fP Q R S :f;f=f?f@f[f]f^f_f`f{f|f}f~fT agbgU V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = cgdgegfggghgigjgkg? @ [ ] lgmgng^ _ ogpg` { | } ~ abbbcbdbebfbgbhbibjbkblbmbqgrgsgtgnbobpbqbugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrbsbKgLgtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*bMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g+b,b-b.b/b:b4g5g6g7g8g9g;b=b?b@b!g#g$g%g[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrc'g(g)g*g+g,g-g.gsctcucvcwcxcyczc/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhAcBcmhnhCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?cohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFh@c[c]c^c_c`cGhHhIhJhKhLh{c|c}c~cMhNhOhPhadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdQhRhShThUhVhWhXhBdCdDdEdFdGdHdIdYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;hJdKd=h?hLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d@h[h]h^h_h`h{h|h}h~haibicidieifigihi~daebecedeeeiijikiliminifegeheieoipiqirijekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJesitiuiviwixiyiziKeLeMeNeOePeQeReAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iSeTe1i2iUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhf3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-iifjfkflfmfnf.i/i:i;i=i?iofpfqfrf@i[i]i^isftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSf_i`i{i|i}i~iajbjTfUfVfWfXfYfZf0fcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj
67 statement,
68 params=params,
69 execution_options=execution_options,
70 bind_arguments=bind_arguments,
71 _parent_execute_state=_parent_execute_state,
72 _add_event=_add_event,
73 )
74 if isinstance(statement, SelectOfScalar): 21f2fg 3f4fh i j k l m n o p q r s t u v w x y z A B 5f6f7f8f9f!f#f$f%fC D 'f(f)fE F *f+fG H I J K L M N O ,f-f.f/fP Q R S :f;f=f?f@f[f]f^f_f`f{f|f}f~fT agbgU V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = cgdgegfggghgigjgkg? @ [ ] lgmgng^ _ ogpg` { | } ~ abbbcbdbebfbgbhbibjbkblbmbqgrgsgtgnbobpbqbugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrbsbKgLgtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*bMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g+b,b-b.b/b:b4g5g6g7g8g9g;b=b?b@b!g#g$g%g[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrc'g(g)g*g+g,g-g.gsctcucvcwcxcyczc/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhAcBcmhnhCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?cohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFh@c[c]c^c_c`cGhHhIhJhKhLh{c|c}c~cMhNhOhPhadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdQhRhShThUhVhWhXhBdCdDdEdFdGdHdIdYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;hJdKd=h?hLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d@h[h]h^h_h`h{h|h}h~haibicidieifigihi~daebecedeeeiijikiliminifegeheieoipiqirijekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJesitiuiviwixiyiziKeLeMeNeOePeQeReAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iSeTe1i2iUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhf3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-iifjfkflfmfnf.i/i:i;i=i?iofpfqfrf@i[i]i^isftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSf_i`i{i|i}i~iajbjTfUfVfWfXfYfZf0fcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj
75 return results.scalars() 21f2fg 3f4fh i m o p q r s t u v w x y z A B 5f6f7f8f9f!f#f$f%fC D 'f(f)fE F *f+fG H I J K L M N O ,f-f.f/fP Q R S :f;f=f?f@f[f]f^f_f`f{f|f}f~fT agbgU V Z 1 2 3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = cgdgegfggghgigjgkg? @ [ ] lgmgng^ _ ogpg` { | } ~ abbbcbdbebfbgbhbibjbkblbmbqgrgsgtgnbobpbqbugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgrbsbKgLgtbubBbCbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*bMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g+b,b-b.b/b:b4g5g6g7g8g9g;b=b?b@b!g#g$g%g[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrc'g(g)g*g+g,g-g.gsctcucvcwcxcyczc/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhAcBcmhnhCcDcKcLcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?cohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFh@c[c]c^c_c`cGhHhIhJhKhLh{c|c}c~cMhNhOhPhadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdQhRhShThUhVhWhXhBdCdDdEdFdGdHdIdYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;hJdKd=h?hLdMdTdUdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d@h[h]h^h_h`h{h|h}h~haibicidieifigihi~daebecedeeeiijikiliminifegeheieoipiqirijekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJesitiuiviwixiyiziKeLeMeNeOePeQeReAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iSeTe1i2iUeVe2e3e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhf3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-iifjfkflfmfnf.i/i:i;i=i?iofpfqfrf@i[i]i^isftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSf_i`i{i|i}i~iajbjTfUfVfWfXfYfZf0fcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj
76 return results # type: ignore 2j k l n E F W X Y 0 ^ _ vbwbxbybzbAbDbEb;b=b?b@bEcFcGcHcIcJcMcNc{c|c}c~cNdOdPdQdRdSdVdWdfegeheieWeXeYeZe0e1e4e5eofpfqfrf
78 @deprecated( 1abcdef
79 """
80 🚨 You probably want to use `session.exec()` instead of `session.execute()`.
82 This is the original SQLAlchemy `session.execute()` method that returns objects
83 of type `Row`, and that you have to call `scalars()` to get the model objects.
85 For example:
87 ```Python
88 heroes = session.execute(select(Hero)).scalars().all()
89 ```
91 instead you could use `exec()`:
93 ```Python
94 heroes = session.exec(select(Hero)).all()
95 ```
96 """,
97 category=None,
98 )
99 def execute( # type: ignore 1abcdef
100 self,
101 statement: _Executable,
102 params: Optional[_CoreAnyExecuteParams] = None,
103 *,
104 execution_options: OrmExecuteOptionsParameter = util.EMPTY_DICT,
105 bind_arguments: Optional[Dict[str, Any]] = None,
106 _parent_execute_state: Optional[Any] = None,
107 _add_event: Optional[Any] = None,
108 ) -> Result[Any]:
109 """
110 🚨 You probably want to use `session.exec()` instead of `session.execute()`.
112 This is the original SQLAlchemy `session.execute()` method that returns objects
113 of type `Row`, and that you have to call `scalars()` to get the model objects.
115 For example:
117 ```Python
118 heroes = session.execute(select(Hero)).scalars().all()
119 ```
121 instead you could use `exec()`:
123 ```Python
124 heroes = session.exec(select(Hero)).all()
125 ```
126 """
127 return super().execute( 2EjFjGjHjIjJjKjLjMjNjOjPjQjg RjSjh i TjyjUjVjWjXjYjZjj k l m n 0jo p 1j2j3j4j5j6jq r s t u v w x y z A B 7jC D 8j9jG H !j#jI J K L M N O P Q R S $j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakT bkckU V dkzjekfkgkhkikjkkklkW X Y Z 0 mk1 2 nkokpkqkrksk3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = tkuk? @ [ ] vkwk` { | } xkykzkAk~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%krbsb'k(k)ktbub*kAj+k,k-k.k/k:k;k=k?k@k[k]k^k_kvbwbxbybzbAbBbCbDbEb`k{kFbGbHbIb|k}k~kalblclJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*bdlelfl+b,b-b.b/b:bglhliljl[b]b^b_b`b{bklllmlnlolpl|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2lAcBc3l4l5lCcDc6lBj7l8l9l!l#l$l%l'l(l)l*l+l,l-lEcFcGcHcIcJcKcLcMcNc.l/lOcPcQcRc:l;l=l?l@l[lScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c]l^l_l@c[c]c^c_c`c`l{l|l}ladbdcdddedfd~lambmcmdmemgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmJdKdSmTmUmLdMdVmCjWmXmYmZm0m1m2m3m4m5m6m7m8m9mNdOdPdQdRdSdTdUdVdWd!m#mXdYdZd0d$m%m'm(m)m*m1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d+m,m-m~daebecedeee.m/m:m;mjekelemeneoe=m?m@m[m]m^mpeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRe_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnSeTeHnInJnUeVeKnDjLnMnNnOnPnQnRnSnTnUnVnWnXnYnWeXeYeZe0e1e2e3e4e5eZn0n6e7e8e9e1n2n3n4n5n6n!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhf7n8n9nifjfkflfmfnf!n#n$n%nsftfufvfwfxf'n(n)n*n+n,nyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f
128 statement,
129 params=params,
130 execution_options=execution_options,
131 bind_arguments=bind_arguments,
132 _parent_execute_state=_parent_execute_state,
133 _add_event=_add_event,
134 )
136 @deprecated( 1abcdef
137 """
138 🚨 You probably want to use `session.exec()` instead of `session.query()`.
140 `session.exec()` is SQLModel's own short version with increased type
141 annotations.
143 Or otherwise you might want to use `session.execute()` instead of
144 `session.query()`.
145 """
146 )
147 def query( # type: ignore 1abcdef
148 self, *entities: _ColumnsClauseArgument[Any], **kwargs: Any
149 ) -> _Query[Any]:
150 """
151 🚨 You probably want to use `session.exec()` instead of `session.query()`.
153 `session.exec()` is SQLModel's own short version with increased type
154 annotations.
156 Or otherwise you might want to use `session.execute()` instead of
157 `session.query()`.
158 """
159 return super().query(*entities, **kwargs) 2yjzjAjBjCjDj