tableauserverclient — ошибка NotSignedInError, несмотря на использование правильных данных

#python #tableau-api

Вопрос:

Я пытаюсь подключить сервер таблиц с помощью Python и модуля tableauserverclient, но я получаю это сообщение, когда пытаюсь использовать функцию users.get_by_id() .:

 File "/usr/local/Caskroom/miniconda/base/envs/bi_reporting_platform/lib/python3.9/site-packages/tableauserverclient/server/endpoint/users_endpoint.py", line 22, in baseurl  return "{0}/sites/{1}/users".format(self.parent_srv.baseurl, self.parent_srv.site_id)  File "/usr/local/Caskroom/miniconda/base/envs/bi_reporting_platform/lib/python3.9/site-packages/tableauserverclient/server/server.py", line 164, in site_id  raise NotSignedInError(error) tableauserverclient.server.exceptions.NotSignedInError: Missing site ID. You must sign in first.  

Я не уверен, почему это происходит, но подозреваю, что классу auth_endpoint каким-то образом не удается проанализировать идентификатор сайта по ответу сервера входа. Но почему это так?

Минимальный релевантный фрагмент (я подвергал цензуре имя пользователя и пароль):

 tableau_auth = TSC.TableauAuth(<username>, <password>, site_id="") def users_cleanup(threshold_in_days=90, bck_file='removed_users', id_to_update):  .  .  .  with dev_server.auth.sign_in(tableau_auth):  ...  user = dev_server.users.get_by_id(id_to_update)  ...  

Я хочу подчеркнуть, что этот код отлично работал несколько дней назад. Помочь кому-нибудь?

Ответ №1:

Явное указание пустой строки для site_id препятствует успешному входу в систему. Если вам нужно значение по умолчанию, пропустите аргумент.

 #!/usr/bin/env python3  import tableauserverclient as TSC import pprint  pp = pprint.PrettyPrinter(indent=2)  # create an auth object tableau_auth = TSC.TableauAuth(<username>, <password>)  # create an instance for your server server = TSC.Server('https://tableau.company.com')  # call the sign-in method with the auth object with server.auth.sign_in(tableau_auth):   all_users, pagination_item = server.users.get()  print("nThere are {} user on site: ".format(pagination_item.total_available))  print([user.name for user in all_users])  sample_user = server.users.get_by_id(all_users[0].id)  pp.pprint(sample_user)