Coverage for sqlmodel/orm/session.py: 100%

25 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-07 05:42 +0000

1from typing import ( 1gabcdef

2 Any, 

3 Dict, 

4 Mapping, 

5 Optional, 

6 Sequence, 

7 TypeVar, 

8 Union, 

9 overload, 

10) 

11 

12from sqlalchemy import util 1gabcdef

13from sqlalchemy.engine.interfaces import _CoreAnyExecuteParams 1gabcdef

14from sqlalchemy.engine.result import Result, ScalarResult, TupleResult 1gabcdef

15from sqlalchemy.orm import Query as _Query 1gabcdef

16from sqlalchemy.orm import Session as _Session 1gabcdef

17from sqlalchemy.orm._typing import OrmExecuteOptionsParameter 1gabcdef

18from sqlalchemy.sql._typing import _ColumnsClauseArgument 1gabcdef

19from sqlalchemy.sql.base import Executable as _Executable 1gabcdef

20from sqlmodel.sql.base import Executable 1gabcdef

21from sqlmodel.sql.expression import Select, SelectOfScalar 1gabcdef

22from typing_extensions import deprecated 1gabcdef

23 

24_TSelectParam = TypeVar("_TSelectParam", bound=Any) 1gabcdef

25 

26 

27class Session(_Session): 1gabcdef

28 @overload 1gabcdef

29 def exec( 1abcdef

30 self, 

31 statement: Select[_TSelectParam], 1abcdef

32 *, 

33 params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, 1gabcdef

34 execution_options: Mapping[str, Any] = util.EMPTY_DICT, 1gabcdef

35 bind_arguments: Optional[Dict[str, Any]] = None, 1gabcdef

36 _parent_execute_state: Optional[Any] = None, 1gabcdef

37 _add_event: Optional[Any] = None, 1gabcdef

38 ) -> TupleResult[_TSelectParam]: ... 1gabcdef

39 

40 @overload 1gabcdef

41 def exec( 1abcdef

42 self, 

43 statement: SelectOfScalar[_TSelectParam], 1abcdef

44 *, 

45 params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, 1gabcdef

46 execution_options: Mapping[str, Any] = util.EMPTY_DICT, 1gabcdef

47 bind_arguments: Optional[Dict[str, Any]] = None, 1gabcdef

48 _parent_execute_state: Optional[Any] = None, 1gabcdef

49 _add_event: Optional[Any] = None, 1gabcdef

50 ) -> ScalarResult[_TSelectParam]: ... 1gabcdef

51 

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( 2egfgh gghgi j k l m n o p q r s t u v w x y z A B C igjgkglgmgngogpgqgD E rgsgtgF G ugvgH I J K L M N O P wgxgygzgQ R S T AgBgCgDgEgFgGgHgIgJgKgLgMgU NgOgV W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( PgQgRgSgTgUgVgWgXg) * YgZg0g+ , 1g2g- . / : ; = ? @ [ 3g4g5g6g] ^ _ ` 7g8g9g!g#g$g%g'g(g)g*g+g,g-g{ .g/g| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCb:g;g=g?g@g[g]g^g_gDbEbFbGb`g{g|gHbIb}g~gJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0bahbhchdh1b2b3b4behfhghhhihjhkhlhmhnhohphqhrhshth5b6buhvh7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhvcwcxcyczcAcOhPhQhRhShThBcCcDcEcUhVhWhXhFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5cYhZh0h1h2h3h4h5h6c7c8c9c!c#c$c%c6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h'c(c{h|h)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDd}h~haibicidieifigihiiijikiliminioipiEdFdGdHdIdJdqirisitiuiviKdLdMdNdwixiyiziOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'dAiBiCiDiEiFiGiHi(d)d*d+d,d-d.d/dIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i:d;d9i!i=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMe#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[iNeOePeQeReSe]i^i_i`i{i|iTeUeVeWe}i~iajbjXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:ecjdjejfjgjhjijjj;e=e?e@e[e]e^e_ekjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKj`e{eLjMj|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4jWfXfYfZf0f1f5j6j7j8j9j!j2f3f4f5f#j$j%j'j6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f(j)j*j+j,j-j.j/j{f|f}f~fagbgcgdg:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhk

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): 2egfgh gghgi j k l m n o p q r s t u v w x y z A B C igjgkglgmgngogpgqgD E rgsgtgF G ugvgH I J K L M N O P wgxgygzgQ R S T AgBgCgDgEgFgGgHgIgJgKgLgMgU NgOgV W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( PgQgRgSgTgUgVgWgXg) * YgZg0g+ , 1g2g- . / : ; = ? @ [ 3g4g5g6g] ^ _ ` 7g8g9g!g#g$g%g'g(g)g*g+g,g-g{ .g/g| } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCb:g;g=g?g@g[g]g^g_gDbEbFbGb`g{g|gHbIb}g~gJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0bahbhchdh1b2b3b4behfhghhhihjhkhlhmhnhohphqhrhshth5b6buhvh7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhvcwcxcyczcAcOhPhQhRhShThBcCcDcEcUhVhWhXhFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5cYhZh0h1h2h3h4h5h6c7c8c9c!c#c$c%c6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h'c(c{h|h)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDd}h~haibicidieifigihiiijikiliminioipiEdFdGdHdIdJdqirisitiuiviKdLdMdNdwixiyiziOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'dAiBiCiDiEiFiGiHi(d)d*d+d,d-d.d/dIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i:d;d9i!i=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMe#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[iNeOePeQeReSe]i^i_i`i{i|iTeUeVeWe}i~iajbjXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:ecjdjejfjgjhjijjj;e=e?e@e[e]e^e_ekjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKj`e{eLjMj|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4jWfXfYfZf0f1f5j6j7j8j9j!j2f3f4f5f#j$j%j'j6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f(j)j*j+j,j-j.j/j{f|f}f~fagbgcgdg:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhk

75 return results.scalars() 2egfgh gghgi j n p q r s t u v w x y z A B C igjgkglgmgngogpgqgD E rgsgtgF G ugvgH I J K L M N O P wgxgygzgQ R S T AgBgCgDgEgFgGgHgIgJgKgLgMgU NgOgV W 0 2 3 4 5 6 7 8 9 ! # $ % ' ( PgQgRgSgTgUgVgWgXg) * YgZg0g+ , 1g2g- . / : ; = ? @ [ 3g4g5g6g] ^ _ ` 7g8g9g!g#g$g%g'g(g)g*g+g,g-g{ .g/g| } cbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCb:g;g=g?g@g[g]g^g_gDbEbFbGb`g{g|gHbIb}g~gJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0bahbhchdh1b2b3b4behfhghhhihjhkhlhmhnhohphqhrhshth5b6buhvh7b8b(b)b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhvcwcxcyczcAcOhPhQhRhShThBcCcDcEcUhVhWhXhFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5cYhZh0h1h2h3h4h5h6c7c8c9c!c#c$c%c6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h'c(c{h|h)c*c;c=c[c]c^c_c`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDd}h~haibicidieifigihiiijikiliminioipiEdFdGdHdIdJdqirisitiuiviKdLdMdNdwixiyiziOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'dAiBiCiDiEiFiGiHi(d)d*d+d,d-d.d/dIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i:d;d9i!i=d?d{d|daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMe#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[iNeOePeQeReSe]i^i_i`i{i|iTeUeVeWe}i~iajbjXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:ecjdjejfjgjhjijjj;e=e?e@e[e]e^e_ekjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKj`e{eLjMj|e}effgfjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4jWfXfYfZf0f1f5j6j7j8j9j!j2f3f4f5f#j$j%j'j6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f(j)j*j+j,j-j.j/j{f|f}f~fagbgcgdg:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhk

76 return results # type: ignore 2k l m o F G X Y Z 1 + , ~ abbbdbHbIb9b!b#b$b%b'b*b+bBcCcDcEc+c,c-c.c/c:c?c@cKdLdMdNd@d[d]d^d_d`d}d~dTeUeVeWe~eafbfcfdfefhfif2f3f4f5f

77 

78 @deprecated( 1gabcdef

79 """ 

80 🚨 You probably want to use `session.exec()` instead of `session.execute()`. 

81 

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. 

84 

85 For example: 

86 

87 ```Python 

88 heroes = session.execute(select(Hero)).scalars().all() 

89 ``` 

90 

91 instead you could use `exec()`: 

92 

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()`. 

111 

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. 

114 

115 For example: 

116 

117 ```Python 

118 heroes = session.execute(select(Hero)).scalars().all() 

119 ``` 

120 

121 instead you could use `exec()`: 

122 

123 ```Python 

124 heroes = session.exec(select(Hero)).all() 

125 ``` 

126 """ 

127 return super().execute( 2pkqkrksktkukvkwkxkykzkAkBkh CkDki j EkikFkGkHkIkJkKkk l m n o Lkp q MkNkOkPkQkRkr s t u v w x y z A B C SkD E TkUkH I VkWkJ K L M N O P Q R S T XkYkZk0k1k2k3k4k5k6k7k8k9kU !k#kV W $kjk%k'k(k)k*k+kX Y Z 0 1 ,k2 3 -k.k/k:k;k=k4 5 6 7 8 9 ! # $ % ' ( ?k) * @k[k- . ]k^k/ : ; = ? @ [ ] ^ _ ` _k`k{k|k}k~kalblcldlelflglhliljlklllmlnlolplqlrlsltl{ ulvl| } wlkkxlylzlAlBlClDlEl~ abbbcbdbFlebfbGlHlIlJlKlLlgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbMlNlDbEbFbGbOlPlJbKbLbMbQlRlSlTlNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4bUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l?l@l[l]l^l_l`l5b6b{l|l}l7b8b~llkambmcmdmemfmgmhmimjmkmlmmmnm9b!b#b$b%b'b(b)b*b+bompm,b-b.b/bqmrmsmtmumvm:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucwmxmymvcwcxcyczcAczmAmBmCmFcGcHcIcJcKcDmEmFmGmHmImLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m'c(c/m:m;m)c*c=mmk?m@m[m]m^m_m`m{m|m}m~manbncn+c,c-c.c/c:c;c=c?c@cdnen[c]c^c_cfngnhninjnkn`c{c|c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdlnmnnnEdFdGdHdIdJdonpnqnrnOdPdQdRdSdTdsntnunvnwnxnUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/dynznAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n:d;d#n$n%n=d?d'nnk(n)n*n+n,n-n.n/n:n;n=n?n@n[n@d[d]d^d_d`d{d|d}d~d]n^naebecede_n`n{n|n}n~neefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeaobocoNeOePeQeReSedoeofogoXeYeZe0e1e2ehoiojokolomo3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_enooopoqorosotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo`e{e0o1o2o|e}e3ook4o5o6o7o8o9o!o#o$o%o'o(o)o*o~eafbfcfdfefffgfhfif+o,ojfkflfmf-o.o/o:o;o=onfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVf?o@o[oWfXfYfZf0f1f]o^o_o`o6f7f8f9f!f#f{o|o}o~oapbp$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdg

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 ) 

135 

136 @deprecated( 1gabcdef

137 """ 

138 🚨 You probably want to use `session.exec()` instead of `session.query()`. 

139 

140 `session.exec()` is SQLModel's own short version with increased type 

141 annotations. 

142 

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()`. 

152 

153 `session.exec()` is SQLModel's own short version with increased type 

154 annotations. 

155 

156 Or otherwise you might want to use `session.execute()` instead of 

157 `session.query()`. 

158 """ 

159 return super().query(*entities, **kwargs) 2ikjkkklkmknkok