我想執行一些原始SQL並利用SQLAlchemy的SQL注入預防功能。在SQLAlchemy原始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...
的問題是,在userid
是some_table
類型varchar
的。我所要做的就是告訴SQLAlchemy在執行語句之前將12345
轉換爲字符串。我知道如何在Python和SQL中進行轉換。但是我記得我曾經在SQLAlchemy中使用過顯式的類型定義,我再也找不到它了。有人能指引我走向正確的方向嗎? (我的實際問題涉及BIGINTs與INT的postgresql數組,但我試圖保持簡單。)
感謝您的幫助!
呀 - 我認識這兩......(還有的在SQL明確類型轉換的方式)。但我的問題是,我有一個整數的postgresql數組,我想與一個BIGINT數組進行比較。我知道在sqlalchemy中有類型,我似乎記得有一種明確設置text()命令類型的方法。 (順便說一句,第一種方法是一個壞主意,因爲'userid =''; DROP TABLE some_table; - 「') – asPlankBridge
你能編輯一個問題來包含這些細節嗎?要縮小解決方案的範圍非常困難,我們最終只會猜測一些東西 –