我正在使用 PyPi 的 servicenow v2.0.1 与 ServiceNow 交互。我需要能够在 sys_user 表中查找用户,以便找到分配给他们的 sys_id。如果有人有一些示例代码,他们可以分享,我们将不胜感激。
我尝试使用以下内容但没有成功:
from servicenow import Connection
from servicenow import ServiceNow
conn = conn = Connection.Auth(username='abc', password='xyz', instance='demo')
user = ServiceNow.Base(conn)
user.__table__ = 'sys_user.do'
rec = user.fetch_all({'user_name': 'abc123'})
这失败了
AttributeError: 'Base' object has no attribute 'fetch_all'
在尝试使用
servicenow
库的方式中遇到错误,因为
fetch_all
方法在
Base
对象上不可用。
servicenow
库并不打算用于直接表查询。
以下是使用
requests
库对 ServiceNow REST API 执行查询以获取
sys_user
表数据的更直接方法:
import requests
# 设置身份验证凭据和实例 URL
username = 'your_username'
password = 'your_password'
instance_url = 'https://your_instance.service-now.com'
# 设置查询参数
table_name = 'sys_user'
query = 'user_name=abc123' # 使用的查询条件替换
fields = 'sys_id,user_name' # 检索 sys_id 和 user_name 字段
# 构造 REST API URL
url = f'{instance_url}/api/now/table/{table_name}?sysparm_query={query}&sysparm_fields={fields}'
# 发送 GET 请求
response = requests.get(url, auth=(username, password))
# 检查响应状态代码
if response.status_code == 200:
# 解析 JSON 响应
data = response.json()
# 提取结果
users = data['result']
# 处理用户记录
for user in users:
print(f"sys_id: {user['sys_id']}, user_name: {user['user_name']}")
else:
print(f"请求失败,状态代码:{response.status_code}")
说明:
-
用的实际 ServiceNow 用户名、密码和实例 URL 替换
your_username
、your_password
和your_instance
。 -
修改
query
变量以匹配的搜索条件。在这个例子中,它会查找用户名为abc123
的用户。 -
fields
变量指定要检索的字段。用需要的任何字段替换sys_id,user_name
。 -
该代码使用
requests.get()
方法发送带有身份验证标头的 GET 请求。 -
如果请求成功,它将解析 JSON 响应并提取
result
数组,其中包含匹配的用户记录。 -
然后,该代码循环遍历用户记录并打印其
sys_id
和user_name
。
这为提供了使用 ServiceNow REST API 查询
sys_user
表并检索所需信息的一种更可靠且直接的方法。