Toegang tot Trello API met Python scripts met Connect Bridge

Ondrej Papiernik Technisch 1 Commentaar

Keen om toegang te krijgen tot Trello API met Python scripts snel en zonder de noodzaak om Trello API te leren? Lees deze tutorial en leer hoe makkelijk het is met Connect Bridge.

Trello API Python - Inleiding

Niemand houdt ervan om lange en ingewikkelde documentatie voor API's te leren elke keer als er een behoefte is om toegang te krijgen. Dit artikel beschrijft hoe toegang te krijgen tot Trello API via Python (heb geprobeerd in versie 3.3) taal scripts zonder enige expertise in de API van Trello. Voor deze tutorial heb je het integratieplatform Connect Bridge nodig om de datacommunicatie via Trello API mogelijk te maken met behulp van meestal eenvoudige SQL statements. De gegevensoverdrachten worden gemaakt via ODBC laag. Ik heb dit bereikt in Python met behulp van de pyodbc module ver. 3.0.7 x64

Wat is "Connect Bridge"?

Connect Bridge is een integratieplatform dat toelaat om om het even welke software te verbinden via ODBC, JDBC drivers en Web Services met meer dan 31 connectoren (inclusief Trello). Ontwikkelaars hebben toegang tot deze connectoren in om het even welke programmeertaal, zonder de noodzaak om expertise te hebben in het doelsysteem, in principe binnen enkele minuten. Je kunt de tool niet alleen gebruiken om toegang te krijgen tot Trello API via Python, maar je kunt ook gegevens ophalen van/naar MS Exchange, MS Dynamics CRM, MS SharePoint en nog veel meer systemen.

Vereisten

Laat ons nu het ontwikkelingsproces doorlopen van een eenvoudig Python script dat toegang krijgt tot Trello API met Connect Bridge via een ODBC driver in enkele eenvoudige stappen:

  1. Installeer Connect Bridge (u kunt hier gratis proberen)
  2. Installeer Python voor Windows ver. 3.3+
  3. Installeer pyodbc module 3.0.7+ (Ik heb de pyodbc-3.0.7.win-amd64-py3.3.exe)
  4. Om het schrijven, draaien en debuggen van mijn scripts makkelijker te maken, heb ik gebruik gemaakt van Eclips Luna met pydev plugin
  5. Instellen account voor Trello in Connect Bridge (zie paragraaf hieronder)

Connect Bridge opstelling

Na de installatie van Connect Bridge ziet u drie toepassingen:

  • CB Service Controller - dient voor het starten en stoppen van Connect Bridge
  • CB Beheertool - hier kunt u uw accounts instellen voor verbinding met het doelsysteem
  • CB Query Analyzer - dit hulpmiddel dient voor visualisatie van de database Schema van het doelsysteem en u kunt hier gemakkelijk uw query's proberen

Dus laten we een account aanmaken voor Trello. Open de beheertool en maak in de sectie Accounts een nieuwe account aan, selecteer in de combobox met connectoren CBTrelloConnector en klik op de wizard Authenticatie.

Daar vul je gewoon je gebruikersnaam en wachtwoord in en geef je toegang tot je Trello.

Dan gewoon opslaan en we hebben onze rekening.
Nu kunnen we de CB Query Analyzer tool gebruiken om schema's te visualiseren. We moeten een nieuwe verbinding toevoegen zoals beschreven in de afbeelding hieronder.

Voor de verbinding vanuit het python script hebben we een verbindings string nodig met deze account.

Om onze connectiestring te kennen, kunnen we rechts klikken op de Trello connectie en dan klikken op "Edit connection", in de connectie editor kies de "Advanced" tab en kopieer de waarde uit het tekstvak "Connection String". (Zie afbeeldingen hieronder)

Hands on scripting!

De kern en tegelijkertijd het enige bestand in mijn oplossing is CBQuery.py. De broncode staat hieronder.

 #!/usr/local/bin/python2.7
# codering: utf-8
'''
CBQuery2 -- gegevens opvragen uit, gegevens schrijven naar SharePoint, Dynamics CRM, Exchange
CBQuery2 is een script dat het mogelijk maakt SQL queries uit te voeren via Connect Bridge ODBC driver

@auteur:     Michal Hainc
@auteursrecht: 2014
@licentie:    Apache 2.0

@contact: michalhainc@gmail.com
@deffield bijgewerkt: 18.8.2014
'''

importeer sys
import os
importeren pyodbc

uit argparse import ArgumentParser
uit argparse importeren RawDescriptionHelpFormatter

__all__ = []
__version__ = 0.1
__date__ = '2014-08-15'
__updated__ = '2014-08-15'

DEBUG = 1
TESTRUN = 0
PROFIEL = 0

klasse CLIError(Uitzondering):
    '''Generieke uitzondering om verschillende fatale fouten op te roepen en te loggen.'''
    def __init__(self, msg):
        super(CLIError).__init__(type(self))
        self.msg = "E: %s" % msg
    def __str__(self):
        geef self.msg terug
    def __unicode__(self):
        geef self.msg terug

def main(argv=None): # IGNORE:C0111
    '''Opdrachtregel opties.

    Als argv None is:
        argv = sys.argv
    anders:
        sys.argv.extend(argv)

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

  Gemaakt door Michal Hainc op %s.

  Gelicentieerd onder de Apache Licentie 2.0
  http://www.apache.org/licenses/LICENSE-2.0

  Gedistribueerd op een "AS IS" basis zonder garanties
  of voorwaarden van welke aard dan ook, hetzij uitdrukkelijk of impliciet.

GEBRUIK
''' % (program_shortdesc, str(__date__))

    probeer:
        # Setup argument parser
        parser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter)
        parser.add_argument('connstr')
        parser.add_argument('query')
        
        # Verwerk argumenten
        args = parser.parse_args()

        query = args.query
        connstr = args.connstr

        conn = pyodbc.connect(connstr)
        cursor = conn.cursor()
        cursor.execute(query)
        terwijl 1:
            row = None
            try:
                row = cursor.fetchone()
            behalve:
                print(sys.exc_info()[1])
                break
            indien niet rij:
                break
            afdruk(rij)
                        
            
    behalve KeyboardInterrupt:
        ### afhandelen toetsenbord interrupt ###
        return 0
    behalve:
        print(sys.exc_info()[1])
        #indent = len(program_name) * " "
        #sys.stderr.write(program_name + ": " + repr(e) + "n")
        #sys.stderr.write(indent + " gebruik --help voor hulp")
        retour 2

als __name__ == "__main__":
         
    als TESTRUN:
        importeer doctest
        doctest.testmod()
    indien PROFIEL:
        import cProfile
        importeren 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('cumulatief')
        stats.print_stats()
        statsfile.close()
        sys.exit(0)
    sys.exit(main())
  • connstr (Verbinding string) bevat de ODBC verbindings string die we doorgeven aan de pyodbc module om een ODBC verbinding te maken opgeslagen in conn variabele
  • Als volgende stap openen we een database cursor met de connectie opgeslagen in conn
  • dan voeren we de SQL query uit die is doorgegeven via de opdrachtregelparameter met de naam query
  • Als laatste gebruiken we een while-lus om de resultaten van de cursor rij per rij te lezen, wanneer de cursor.fetchone None teruggeeft, breken we de lus
  • als er een uitzondering optreedt tijdens het ophalen van de ODBC, breken we ook de lus en drukken we het probleem af naar de uitvoer
  • indien de fetchone methode slaagt en een data rij retourneert, zullen we de ruwe data rij afdrukken naar de output voor demonstratie doeleinden (... kan elke vorm van output zijn... we kunnen formatteren als xml of json, csv... of elke vorm van data-uitwisseling formaat) of gewoon gebruik maken van de ruwe data rij object om te worden gebruikt in verdere code logica om aangepaste taken uit te voeren

Het CBQuery.py script uitvoeren

Ik heb mijn script getest met de Windows PowerShell, maar je kunt elke andere shell gebruiken die je maar wilt...

We weten dat onze CBQuery.py twee positionele commandoregel argumenten accepteert de "connstr" en "query".

We kunnen zien dat het schema een "tabel" bevat met de naam "lijst", dus we kunnen onze query construeren als SELECT * FROM list LIMIT 10 om de eerste 10 items uit de Trello lijst te selecteren, en door de query uit te voeren zoals we kunnen zien op onze afbeelding hieronder dat de query 10 rijen teruggeeft in de uitvoer.

Nu kunnen we proberen om een nieuwe Trello Card te maken in de eerste 'Blanco' lijst. We zullen hiervoor query gebruiken:

INSERT INTO Kaart (naam, id lijst) VALUES ("Nieuwe kaart", "565c0d32c75039b07e86b0b3")

Je kan in Trello zien dat de nieuwe kaart succesvol is aangemaakt

Beperkingen

Tot nu toe heb ik de Connect Bridge tool alleen kunnen gebruiken vanuit Windows besturingssystemen, vanwege het feit dat Connecting Software geen ODBC Linux client library heeft geleverd (Als dat al mogelijk is). Speel dus zeker met je Python scripts op een Windows machine.

Conclusie

We hebben bewezen dat toegang tot Trello API in Python heel eenvoudig kan zijn met behulp van Connect Bridge integratie tool. En Trello is slechts een systeem van de vele anderen die Connect Bridge maakt het mogelijk om te integreren. Stel je voor dat je veilig toegang kunt krijgen tot API's van grote software en diensten zoals Dynamics CRM, NAV, AX, Salesforce, Exchange en nog veel meer. Als u geïnteresseerd bent om te stoppen met het verspillen van uw tijd het leren van honderden API-documentatie pagina's elke keer dat je in een nieuw doelsysteem, vraag naar gratis proefversie, prijzen en bijkomende vragen.

Proost,
Ondrej

Opmerkingen 1

  1. Verbazingwekkend goed werk. Deze twee punten zijn goed gedekt; "Connect Bridge setup" en "Beperkingen". Bedankt voor het delen van dit onderwerp "Toegang Trello API met behulp van Python scripts met Connect Bridge". Het beste deel is het artikel heeft alle praktische detaillering! Blijven delen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd.