SqlAlchemy セッションは次のように定義されました。
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
そして構成されました:
DBSession.configure(bind=engine)
Base.metadata.bind = engine
また、生のSQLをトランザクションに実行してjsonbフィールドのインデックスを作成する必要があります。
with transaction.manager:
sql = "CREATE INDEX my_index ON my_table USING gin ((jsonb_field -> 'jsonb_key'));"
DBSession.execute(sql)
操作の SqlAlchemy ログは次のようになります。
BEGIN (implicit)
INFO CREATE INDEX my_index ON my_table USING gin ((jsonb_field -> 'jsonb_key'));
INFO {}
INFO ROLLBACK
また、インデックスは作成されません。
ただし、同じ SQL コマンドを実行すると、psql
エラーなしでインデックスが作成されます。
=> CREATE INDEX my_index ON my_table USING gin ((jsonb_field -> 'jsonb_key'));
=> CREATE INDEX
この場合、SqlAlchemy の "execute" コマンドを使用してインデックスを作成するにはどうすればよいですか?