Tableau Desktop (twb 파일)의 DB 연결 정보를 Python으로 다시 작성하는 방법

6985 단어 Tableau파이썬XML
Tableau를 SSH 연결 등으로 로컬에서 DB 환경에 연결하는 경우 Tableau Server에 Publish 후에 데이터 소스의 연결 정보를 다시 작성해야 합니다.
Publish 후에 일일이 수동으로 데이터 소스의 연결 설정을 다시 쓰는 것은 번거롭기 때문에 Python을 사용하여 자동으로 DB 연결 정보를 다시 쓰는 방법을 소개합니다.
Tableau Desktop(twb 파일)의 실태는 XML 파일이므로, Python의 라이브러리를 사용하면 간단하게 퍼스, 재기록도 할 수 버립니다.
(이하, twb 파일의 실태)


환경


  • mac High Sierra 10.13.6
  • Tableau 2019.2.1
  • Python 3.6.6

  • 디렉토리 구성


    config 아래에 설정 파일, src 아래에 py 파일을 둡니다.
    root/
     ├ config/
     ├ src/
    

    설정 파일


    config 아래에 다음을 생성합니다.

    conf.ini
    [file]
    # 書き換え対象のtwbファイル
    TWB_FILE_PATH =
    [parser]
    # db接続情報を属性にもつタグ
    DB_CONF_PATH = datasources/datasource/connection/named-connections/named-connection/connection
    [db]
    # 書き換え後のdb接続情報
    PORT = 
    SERVER = 
    DBNAME = 
    USERNAME = 
    PASSWORD = 
    

    스크립트 파일



    다음 스크립트를 실행하면 twb 파일이 다시 작성됩니다.
    XML 구문 분석하고 attribute를 다시 쓰는 것만의 처리입니다.

    main.py
    import ConfigParser
    import os
    import sys
    
    import xml.etree.ElementTree as ET
    
    # 設定ファイルの読み込み
    conf = ConfigParser()
    # iniファイルの絶対パスを指定
    conf.read(os.path.dirname(os.path.abspath('__file__')) + '/../config/conf.ini')
    
    try:
        # XMLを解析 
        tree = ET.parse(conf.get('file', 'TWB_FILE_PATH')) 
        # XMLを取得 
        root = tree.getroot()
    # twbファイルのXMLパースに失敗した場合
    except Exception as e:
        print(f'{e}')
        sys.exit(1)
    
    # DB接続情報が記載されている属性を書き換え
    for result in root.findall(conf.get('db', 'DB_CONF_PATH')):
        # 属性の書き換え
        result.set('port', conf.get('db', 'PORT'))
        result.set('username', conf.get('db', 'USERNAME'))
        result.set('dbname', conf.get('db', 'DBNAME'))
        result.set('server', conf.get('db', 'SERVER'))
        result.set('password', conf.get('db', 'PASSWORD'))
    
    # 書き換えたXMLファイルを反映
    tree.write(file_path, xml_declaration=True)
    print('rewrote db_connection info.')
    

    좋은 웹페이지 즐겨찾기