2017-03-20 10 views
2

で、私はここで最初の投稿になっています。SqlObjectとSqlBuilderのIN()関数の文字列値は

私は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)) 

なぜこれが機能しないのか考えている人はいますか?私はlibの問題についてもっと詳しく考えていますが、多分私は何かを逃しています

ありがとうございました!

注:(私は、クエリを構築したいと)私は、この場合に重要としてそれを考慮していないが、私は、SQL Server 2012の

D. FEにこのクエリを送りたいです。

答えて

1

両方のステートメントが正しいと思われます。しかし、最初のもの(文字列を含む)の表現は、データベースに依存します。つまり、各特定のデータベースのクエリで文字列がどのように表示されるか(引用、エスケープなど)に依存します。したがって、接続やモデルのような適切なdb対応オブジェクトがないと文字列に変換することはできません。オブジェクトはsqlreprメソッドを持ちます。次の例では__connection__オブジェクトはpostgresql接続です:

>>> print(__connection__.sqlrepr(IN(t.s_ID, ("1", "2"))) 
((MyTable.s_ID) IN ('1', '2')) 
+0

ありがとうございます。私は接続オブジェクトをインスタンス化しようとします(私はすでにpypyodbcで開発されたSQLクライアントを持っているので、現時点では使用しません) – DFE

関連する問題