我嘗試使用SQLAlchemy的調用用戶定義函數(表函數)。這裏是我的代碼:SQLAlchemy的用戶定義函數的錯誤
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
db = create_engine('mssql+pymssql://User:[email protected]/Database')
metadata = MetaData(db)
Session = sessionmaker(bind=db)
session = Session()
results = session.query(func.MyFunctionName('Value')).all()
當這個執行我收到以下錯誤:
sqlalchemy.exc.OperationalError: (OperationalError) (195, "'MyFunctionName' is not a recognized built-in function name.DB-Lib error message 195, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n") 'SELECT MyFunctionName(%(MyFunctionName_2)s) AS [MyFunctionName_1]' {'MyFunctionName_2': 'Value'}
當我看到SQL事件探查器,我得到如下:
SELECT MyFunctionName('Value') AS [MyFunctionName_1]
還告訴我,它不是在查詢中添加SELECT * FROM MyFunctionName。
什麼我需要做的就是我的session.query在查詢執行添加* FROM?
如果您需要了解更多信息,請發表評論。
這曾與的調整基於表的功能。我不得不將session.query更改爲session.execute(myfunc).fetchall()。我使用更新後的代碼編輯了您的回覆。 – CodeLikeBeaker
通過選擇()查詢()應該工作爲好,它會包裝在一個額外的選擇,但你仍然會得到相同的結果。你的SQLAlchemy的輸出/版本是什麼? – zzzeek
它看起來我需要一個別名爲我包裹的子選擇。所以「從myfunc()中選擇列作爲A – CodeLikeBeaker