2

作为我在这里的第一篇文章,我想警告说,我在网络上看起来尽可能好,但没有任何解决办法。

我正在使用 python 2.7 和最新版本的 sqlobject lib。

当使用字符串列表或元组调用 IN() 函数时,我遇到了一个看起来像错误的结果:

from sqlobject.sqlbuilder import table, IN

t = table.MyTable
print(IN(t.s_ID, ("1", "2")))
>>> <SQLOp 34ec648L>

虽然使用整数似乎效果更好:

print(IN(t.s_ID, (1, 2)))
>>>> ((MyTable.s_ID) IN (1, 2))

有谁知道为什么这不起作用?我更多地考虑了库中的一个问题,但也许我遗漏了一些东西

提前致谢!

注意:在这种情况下我不认为它很重要(因为我只想构建查询)但我希望将此查询发送到 SQL Server 2012

D.FE。

4

1 回答 1

1

看起来你的两个陈述都是正确的。但是第一个(包括字符串)的表示是依赖于数据库的——它取决于字符串在每个特定数据库的查询中的呈现方式(它们如何被引用、转义等)。sqlrepr因此,如果没有适当的 db-aware 对象,例如连接或模型(具有方法的对象),它就无法转换为字符串。在下一个示例中,__connection__对象是一个 postgresql 连接:

>>> print(__connection__.sqlrepr(IN(t.s_ID, ("1", "2")))
((MyTable.s_ID) IN ('1', '2'))
于 2017-04-04T15:48:28.437 回答