いくつかの未加工SQLを実行し、SQLAlchemyのSQLインジェクション防止を利用したいと思います。SQLAlchemyでの入力パラメータの設定raw SQL
私のコードは、このビットに似ています
import sqlalchemy
from sqlalchemy.sql import text
DB_URI = '...'
engine = sqlalchemy.create_engine(DB_URI)
sql = text("SELECT * FROM some_table WHERE userid = :userid")
res = engine.execute(sql, userid=12345)
# do something with the result...
問題がsome_table
でuserid
はタイプvarchar
であるということです。私がしたいのは、ステートメントを実行する前に12345
を文字列に変換するようにSQLAlchemyに指示することだけです。私はPythonとSQLの両方でどのように変換を行うことができるかを知っています。しかし、私はかつてSQLAlchemyで明示的な型定義を使用していたことを覚えています。私はこれ以上見つけられません。誰かが私に正しい方向を向けることができますか? (私の実際の質問には、BIGINTとINTのpostgresql配列が含まれていますが、単純なままにしました)
ありがとうございました!
- 私は(明示的にSQLでの鋳造型の方法もあります)...これらの両方を知っていました。しかし、私の問題は、BIGINTの配列と比較したいpostgresqlの整数配列があることです。私はsqlalchemyに型があることを知っているので、text()コマンドの型を明示的に設定する方法があることを覚えているようです。 (btw。第1の方法は 'userid =" '; DROP TABLE some_table; - ) ' – asPlankBridge
のため、これらの詳細を含む質問を編集してください。ソリューションを絞り込むことは非常に難しく、私たちはただ推測することに終わります –