python - 如何在Python中获取SQL Server的SYSTEM_USER

标签 python sql sql-server azure azure-functions

我正在使用 Azure 函数创建 SQL 查询并将数据插入数据库。我需要为 Added_by 列提供的参数之一应该是 system_user

如果我运行Select SYSTEM_USER;,我会在 SQL Server 中获取用户名。但是,如果我在 Azure 函数中使用 Python 运行相同的命令,我将得不到任何结果。

如何获取SYSTEM_USERsql_user_nameSYSTEM_USER 相同吗?

这是部分代码供引用:

sql_fetch_system_user = "SELECT SYSTEM_USER;"
system_user = exec_sql_query_no_params(sql_fetch_system_user, sql_server, database, sql_user_name, sql_password, sql_driver)
print("sql_user_name",system_user)


def exec_sql_query_no_params(query, sql_server, database, sql_user_name, sql_password, sql_driver):
    try:
        with pyodbc.connect('DRIVER='+sql_driver+';SERVER=tcp:'+sql_server+';PORT=1433;DATABASE='+database+';UID='+sql_user_name+';PWD=' + sql_password) as conn:
            with conn.cursor() as cursor:
                conn.autocommit = True
                cursor.execute(query)
    except pyodbc.Error as e:
        logging.error(f"SQL query failed: {e}")
        raise

最佳答案

我在我的环境中进行了复制,@Charlieface 的观察是正确的,下面是对我有用的代码:

import os
import logging
import pyodbc
import azure.functions as func
from azure.identity import DefaultAzureCredential

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    server1 = 'servername.database.windows.net'
    db1 = 'db1'
    username1 = 'user'
    pwd1 = 'Welcome$'
    constring = f"Driver={{ODBC Driver 17 for SQL Server}};Server={server1};Database={db1};Uid={username1};Pwd={pwd1};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
    with pyodbc.connect(constring) as connec:
        with connec.cursor() as c1:
            c1.execute('SELECT SYSTEM_USER;')
            row = c1.fetchone()
    return func.HttpResponse(f"SQL Query Result: {row}", status_code=200)

输出:

enter image description here

并且sql_user_name与SYSTEM_USER类似

关于python - 如何在Python中获取SQL Server的SYSTEM_USER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76854874/

相关文章:

sql - 在 View 中使用临时表

mysql - 数据库队列的并发问题,需要可移植的解决方案

python - 我如何跟踪有多少用户访问我的网站

python - 使用 Keras 和 fit_generator 的 TensorBoard 分布和直方图

python - on_mouse_down 调用每个按钮(甚至滚轮移动)

mysql - 查询以告诉我某个数字在列中出现了多少次

python - 除非我手动调整窗口大小,否则 Selenium 将看不到元素

php - 如何在 MySQLi 中为我的数据库创建表

php - 将街道名称与门牌号分开?

sql-server - 基于范围的列数