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 を見ると、次のようになります。

SELECT MyFunctionName('Value') AS [MyFunctionName_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 に答える