You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SQL Server的SUSER_SNAME函数映射到SQLAlchemy ORM

如何在SQLAlchemy中自定义调用SQL Server的SUSER_SNAME函数

完全可以通过自定义函数的方式实现,以下是两种常用方案:

方案一:继承GenericFunction创建规范的自定义函数

SQLAlchemy支持通过继承GenericFunction扩展内置函数集,适合需要明确指定返回类型的场景:

from sqlalchemy import func
from sqlalchemy.sql.functions import GenericFunction
from sqlalchemy.types import String

# 定义对应SQL Server SUSER_SNAME的自定义函数类
class suser_sname(GenericFunction):
    type = String  # 指定函数返回值类型为字符串
    name = "SUSER_SNAME"  # 与SQL Server中的函数名完全对应

定义完成后,就能像调用内置user()函数一样使用:

res = connection.execute(func.suser_sname())
# 提取结果值
current_user = res.scalar()

方案二:直接通过func对象调用原生函数

如果不需要额外配置返回类型,也可以直接通过func对象直接访问SQL Server原生函数,SQLAlchemy会自动生成对应的SQL语句:

from sqlalchemy import func

# 直接调用func.SUSER_SNAME()
res = connection.execute(func.SUSER_SNAME())
current_user = res.scalar()

结合ORM查询使用

自定义函数的优势在于可以无缝集成到ORM查询中,例如:

from sqlalchemy.orm import Session

session = Session(bind=engine)
# 查询业务数据时同时获取当前登录的SQL Server用户
query_result = session.query(
    YourModel.id,
    YourModel.name,
    func.suser_sname().label("current_login_user")
).all()

内容的提问来源于stack exchange,提问作者quant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:59:54