0
sqlalchemyの未処理SQLクエリのパラメータにリストをバインドしようとしています。 This postは、psycopg2
で以下のように行うことをおすすめします。SQLAlchemy pyodbcを使用したSQLパラメータリストの置換
some_ids = [1, 2, 3, 4]
query = "SELECT * FROM my_table WHERE id = ANY(:ids);"
engine.execute(sqlalchemy.sql.text(query), ids=some_ids)
しかし、これはpyodbc
とSQL Server
のための私の環境のために働くように思われません。一つだけ"?"
ではなく、4
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError)
('Invalid parameter type. param-index=0 param-type=tuple', 'HY105')
[SQL: 'SELECT * FROM my_table WHERE id = ANY(?);'] [parameters: ((1, 2, 3, 4),)]
のこの作品を作るためにどのような方法があります追加されますか?可能であればmanually creating placeholdersを避けたいと思います。
SQLAlchemyのバージョン= 1.0.13、pyodbcバージョン=これは私のために働いているようだ4.0.16
はい、これは私にとってもうまくいくようです。しかし、上記の生のSQLクエリは機能しません。どんな考え? –
['some_ids = [bindparam( 'id_1')、bindparam( 'id_2')]](http://docs.sqlalchemy.org/ja/latest/core/sqlelement.html#sqlalchemy.sql)を使用することができます。 expression.bindparam)が 'executemany()'を使いたい場合は、パラメータ名を明示的に制御する必要があります。あなたの例では、手作業で作成された 'params'を' execute() 'に渡す必要はありません。 –
うーん、私は参照してください。私はそれが一つの方法だと思う。しかし、可能であれば、私は生のSQLクエリを書いて、パラメタとしてリストを渡したいと思います。 –