回答

收藏

如何在sqlalchemy基于文字的查询?

技术问答 技术问答 112 人阅读 | 0 人回复 | 2023-09-13

我创建了一个用于创建表达式函数的函数
! n# Z. F- J0 H; U: r7 G  o9 ~def test(operator1,operation,operator二、    return literal_column(operator1).op(operation)(operator2)现在,当我用9 [6 X& l* b; m( [- `
test(1,'=',1)然后就可以了
# z) J3 O" ?  @* `  y, C+ H但是当我通过的时候
( Y9 B* J" h  n; h+ _* a3 K0 Ctest('abc','=','abc')然后,它给出了错误,即abc不是列。5 Q! p" F2 R, c9 F6 }0 R8 U3 Q2 E) `
我试图转换它3 N6 Y9 [% ^$ |( p- c2 Y& @- ?6 U
def test(operator1,operation,operator二、    return literal_column(operator1,String).op(operation)(operator2)但这行不通。1 }; I8 t; |" E# m, t9 k/ W4 `
假如我打电话给我
/ N- {2 H6 \% F+ f( Ztest("'abc'",'=','abc')没有办法获得operator1的类型,并在此基础上创建相同内容类型的类型literal_colum?) f3 }3 W& u' v9 O
                                                               
5 I1 p& o- a( P9 x/ j; p2 b3 V    解决方案:                                                               
/ `. a5 B/ ]; _; l8 w6 B! {                                                                任何文本值都可以转化为表达式结构:
8 L# B! q; j! s( Ffrom sqlalchemy import literal_column,bindparam# ? = ?,1 will be boundbindparam(1) == bindparam(1)# " 1 = 1",literals rendered inline (no quoting is applied !!)literal_column(str(1)) == literal_column(str(1)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则