我正在尝试使用SQLAlchemy调用用户定义的函数(表函数)。这是我的代码:
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
db = create_engine('mssql+pymssql://User:Password@Server/Database')
metadata = MetaData(db)
Session = sessionmaker(bind=db)
session = Session()
results = session.query(func.MyFunctionName('Value')).all()
执行此操作时,我收到以下错误:
sqlalchemy.exc.OperationalError :( OperationalError)(195, “'MyFunctionName'不是公认的内置函数name.DB-Lib 错误消息195,严重性15:\ n一般SQL Server错误:检查 来自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来执行?
如果您需要更多信息,请发表评论。
答案 0 :(得分:2)
基于表格的函数,首先需要使用http://docs.sqlalchemy.org/en/latest/core/tutorial.html#functions
中描述的模式转换为select()对象myfunc = select([column('x'), column('y')]).select_from(func.myfunction())
session.execute(myfunc).fetchall()