SQLAlchemy用户定义的函数错误

时间:2013-07-11 15:31:38

标签: python-2.7 sqlalchemy user-defined-functions

我正在尝试使用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来执行?

如果您需要更多信息,请发表评论。

1 个答案:

答案 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()