我正在使用 Azure 函数创建 SQL 查询并将数据插入数据库。我需要为 Added_by
列提供的参数之一应该是 system_user
。
如果我运行Select SYSTEM_USER;
,我会在 SQL Server 中获取用户名。但是,如果我在 Azure 函数中使用 Python 运行相同的命令,我将得不到任何结果。
如何获取SYSTEM_USER
? sql_user_name
与 SYSTEM_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)
输出:
并且sql_user_name与SYSTEM_USER类似
关于python - 如何在Python中获取SQL Server的SYSTEM_USER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76854874/