Python trello

使用Connect Bridge的Python脚本访问Trello API。

Georgii KapanadzeTechnical 1 Comment

Trello与连接软件

在这里你只需填写你的用户名和密码,并允许访问你的Trello。

想用Python脚本快速访问Trello API,而且不需要学习Trello API?请阅读本教程,了解使用Connect Bridge是多么容易。

Trello API Python - 简介

没有人喜欢在每次需要访问API时学习冗长而复杂的文档。本文描述了如何通过Python(已在3.3版本中尝试)语言脚本访问Trello API,而不需要任何Trello的API方面的专业知识。在本教程中,你需要使用集成平台Connect Bridge,以便通过Trello API使用简单的SQL语句进行数据通信。数据传输是通过ODBC层进行的。我在Python中使用pyodbc模块实现了这一点。3.0.7 x64

什么是 "Connect Bridge"?

Connect Bridge 是一个集成平台,允许通过ODBC、JDBC驱动和Web服务与超过31个连接器(包括Trello)连接任何软件。开发人员可以用任何编程语言访问这些连接器,而不需要具备目标系统的专业知识,基本上在几分钟内就可以完成。最重要的是,你不仅可以使用该工具通过Python访问Trello API,你还可以从MS Exchange、MS Dynamics CRM、MS SharePoint和更多系统中抓取/输入数据。

先决条件

现在让我们通过简单的Python脚本的开发过程,通过几个简单的步骤,使用Connect Bridge通过ODBC驱动访问Trello API。

  1. 安装Connect Bridge(你可以在这里得到 在此免费试用)
  2. 安装 适用于Windows的Python 3.3+版本3.3+
  3. 安装 pyodbc模块 3.0.7+ (我曾用过的是 pyodbc-3.0.7.win-amd64-py3.3.exe)
  4. 为了让我的脚本的编写、运行和调试更容易,我使用了 日食 Luna与 pydev 插件
  5. 在Connect Bridge中为Trello设置账户(见下段)。

Connect Bridge设置

安装Connect Bridge后,可以看到三个应用。

  • CB服务控制器 - 用于启动和停止Connect Bridge。
  • CB管理工具--在这里您可以设置您的账户以连接到目标系统。
  • CB查询分析器--该工具用于目标系统数据库Schema的可视化,您可以在这里轻松地尝试查询。

那么让我们为Trello创建你的账户吧。打开管理工具,在账户部分创建新账户,在连接器组合框中选择CBTrelloConnector,然后点击认证向导。

用连接软件登录到trello

那么只要保存好,我们的账户就有了。
现在我们可以使用CB Query Analyzer工具来可视化模式。我们需要添加新的连接,如下图所示。

Trello与连接软件Trello与连接软件

为了从python脚本连接,我们将需要一个连接字符串到这个账户。

要想知道我们的连接字符串,我们只需右击Trello连接,然后点击 "编辑连接",在连接编辑器中选择 "高级 "选项卡,从文本框中复制 "连接字符串 "的值。(见下图)

Trello与连接软件Trello与连接软件

手把手教你写脚本!

核心同时也是我的解决方案中唯一的文件是CBQuery.py。请在下面找到源代码。

 #!/usr/local/bin/python2.7
# 编码: utf-8
'''
CBQuery2 -- 从SharePoint、Dynamics CRM、Exchange查询数据,并将数据写入其中
CBQuery2是一个脚本,允许通过Connect Bridge ODBC驱动运行SQL查询。

@作者。     Michal Hainc
@版权:2014
@license:    Apache 2.0

@联系:michalhainc@gmail.com
@deffield更新。18.8.2014
'''

输入sys
import os
import pyodbc

from argparse import ArgumentParser
从argparse中导入RawDescriptionHelpFormatter

__全部__ = []
__version__ = 0.1
__date__ = '2014-08-15
__updated__ = '2014-08-15'.

DEBUG = 1
TESTRUN = 0
PROFILE = 0

class CLIError(Exception):
    '''通用的异常,可以引发并记录不同的致命错误。
    def __init__(self, msg):
        super(CLIError).__init__(type(self))
        self.msg = "E: %s" % msg
    def __str__(self):
        return self.msg
    def __unicode__(self):
        返回 self.msg

def main(argv=None):# ignore:c0111
    '''命令行选项'''。

    如果argv是无。
        argv = sys.argv
    否则。
        sys.argv.extend(argv)

    program_name = os.path.basename(sys.argv[0])
    program_version = "v%s" % __version__。
    program_build_date = str(__updated__)
    program_version_message = '%%(program)s %s (%s)' % (program_version, program_build_date)
    program_shortdesc = __import__('__main__').__doc__.split("n")[1]
    program_license = '''%s

  由Michal Hainc在%s上创建。

  以Apache许可证2.0授权。
  http://www.apache.org/licenses/LICENSE-2.0

  在 "原样 "的基础上分发,没有任何保证
  或任何类型的条件,无论是明示还是暗示。

使用方法
''' % (program_shortdesc, str(__date__))

    试试。
        # 设置参数解析器
        parser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter)
        parser.add_argument('connstr')
        parser.add_argument('query')
        
        # 处理参数
        args = parser.parse_args()

        query = args.query
        connstr = args.connstr

        conn = pyodbc.connect(connstr)
        cursor = conn.cursor()
        cursor.execute(query)
        while 1:
            行 = 无
            尝试。
                row = cursor.fetchone()
            除了。
                print(sys.exc_info()[1])
                休息
            如果不是行。
                break
            print(row)
                        
            
    除了KeyboardInterrupt。
        ###处理键盘中断 ###
        返回0
    除外。
        print(sys.exc_info()[1])
        #indent = len(program_name) * " "
        #sys.stderr.write(program_name + ": " + repr(e) + "n")
        #sys.stderr.write(indent + " for help use --help")
        返回2

如果 __name__ == "__main__":
         
    如果 TESTRUN:
        输入doctest
        doctest.testmod()
    if PROFILE:
        输入cProfile
        输入pstats
        profile_filename = 'CBQuery2_profile.txt'。
        cProfile.run('main()', profile_filename)
        statsfile = open("profile_stats.txt", "wb")
        p = pstats.Stats(profile_filename, stream=statsfile)
        stats = p.strip_dirs().sort_stats('cumulative')
        stats.print_stats()
        statsfile.close()
        sys.exit(0)
    sys.exit(main())
  • connstr (Connection string) 持有ODBC连接字符串,我们将其传递给pyodbc模块,以创建一个ODBC连接,存储在conn变量中。
  • 下一步,我们使用存储在conn中的连接打开一个数据库游标。
  • 然后我们执行通过命令行参数query传递的SQL查询
  • 最后,我们使用一个while循环逐行读取游标的结果,当cursor.fetchone返回None时,我们中断这个循环
  • 如果在ODBC获取过程中出现异常,我们也会中断循环,并将问题打印出来输出
  • 如果fetchone方法成功并返回一个数据行,我们将把原始数据行打印到输出端进行演示(......可以是任何类型的输出......我们可以格式化为xml或json,csv......或任何类型的数据交换格式),或者干脆使用原始数据行对象来进一步的代码逻辑来执行自定义任务。

运行CBQuery.py脚本

我已经使用Windows PowerShell测试了我的脚本,但你可以运行任何其他你喜欢使用的shell。

我们知道,我们的CBQuery.py接受两个定位命令行参数 "connstr "和 "query"。

我们可以看到模式中包含一个名为 "list "的表,因此我们可以将查询构建为SELECT * FROM list LIMIT 10,以从Trello列表中选择前10个条目,通过运行查询,我们可以在下面的图片中看到查询在输出中返回10行。

Trello与连接软件Trello与连接软件

现在我们可以尝试创建新的Trello卡到第一个 "空白 "列表。我们将使用它的查询。

INSERT INTO Card (name, idlist) VALUES ('New card', '565c0d32c75039b07e86b0b3')

Trello与连接软件

您可以在Trello中看到新的卡片已经成功创建。

Trello与连接软件

限制因素

到目前为止,我只能在Windows操作系统上使用Connect Bridge工具,因为Connecting Software没有提供任何ODBC Linux客户端库(如果这是可能的话)。所以一定要在Windows机器上玩你的Python脚本。

结论

我们已经证明,使用Connect Bridge集成工具,在Python中访问Trello API是非常容易的。而Trello仅仅是Connect Bridge可以集成的众多系统中的一个。想象一下,你可以安全地访问主要软件和服务的API,如Dynamics CRM、NAV、AX、Salesforce、Exchange和更多。如果你有兴趣停止浪费你的时间,在每次遇到新的目标系统时学习数以百计的API文档页面。 询问免费试用,价格和任何其他问题。.

干杯。
Ondrej

Comments 1

  1. 苏哈-扎因的头像

    Amazingly Great job。这两点涵盖得很好:"Connect Bridge设置 "和 "约束"。感谢分享这个主题 "使用Connect Bridge的Python脚本访问Trello API"。最棒的是,文章中有所有实用的细节!继续分享。继续分享。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.