1

我正在尝试使用 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' 不是可识别的内置函数名。DB-Lib 错误消息 195,严重性 15:\n一般 SQL Server 错误: 检查来自 SQL Server 的消息\n ") 'SELECT MyFunctionName(%(MyFunctionName_2)s) AS [MyFunctionName_1]' {'MyFunctionName_2': '值'}

当我查看 SQL Profiler 时,我得到以下信息:

选择我的功能名称('值')作为 [我的功能名称_1]

这告诉我它没有在查询中添加SELECT * FROM MyFunctionName

我需要做什么才能让我的 session.query 在查询中添加 * FROM 以执行?

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

4

1 回答 1

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()
于 2013-07-13T18:13:29.067 回答