2017-04-05 19 views
0

既存のSqlAlchemy Selectableオブジェクトの1つの句を置き換えます。具体的には、私はJSONのコラムで動作Postgresデータベース上で実行するようになっているクエリがあります:テスト用SqlalchemyのReplace句を選択可能

sa.select([t.c.col1]).where(sa.func.json_extract_path_text(t.c.col1, 'name') == 'test')) 

を、私はjson_extract_path_text機能をサポートしていないメモリ内のSQLiteデータベースを持っているので、Iその代わりにWHERE節を文字列操作を行う同様の関数に置き換えてください。

テスト機能で受け取ったプロダクションクエリを変更できないため、作成した後にその句を置き換えたいと思います。 selectableの構文ツリーを取得するAPIはありますか?

+2

これはかなり1は、彼らが生産に使用するのと同じDB製品に対してテストする必要があります理由です。あなたは呼び出しを置き換えるのではなく、sqliteの[missing function](https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_function)を考慮しましたか? –

+0

ありがとう!あなたが答えとしてあなたのコメントを入れたら、私はそれを受け入れるでしょう。 – user1742188

答えて

0

私はイリヤの提案を実施し、私自身のjson_extract_path_text機能を実装し、DBにそれを置くためにSqliteをのcreate_functionを使用:

conn = self.engine.connect() 
conn.connection.create_function('json_extract_path_text', -1, json_extract_path_text) 
関連する問題