How to Build an ETL App for QuickBooks Online Data in Python with CData



Create ETL applications and real-time data pipelines for QuickBooks Online data in Python with petl.

The rich ecosystem of Python modules lets you get to work quickly and integrate your systems more effectively. With the CData Python Connector for QuickBooks Online and the petl framework, you can build QuickBooks Online-connected applications and pipelines for extracting, transforming, and loading QuickBooks Online data. This article shows how to connect to QuickBooks Online with the CData Python Connector and use petl and pandas to extract, transform, and load QuickBooks Online data.

With built-in, optimized data processing, the CData Python Connector offers unmatched performance for interacting with live QuickBooks Online data in Python. When you issue complex SQL queries from QuickBooks Online, the driver pushes supported SQL operations, like filters and aggregations, directly to QuickBooks Online and utilizes the embedded SQL engine to process unsupported operations client-side (often SQL functions and JOIN operations).

About QuickBooks Online Data Integration

CData provides the easiest way to access and integrate live data from QuickBooks Online. Customers use CData connectivity to:

  • Realize high-performance data reads thanks to push-down query optimization for complex operations like filters and aggregations.
  • Read, write, update, and delete QuickBooks Online data.
  • Run reports, download attachments, and send or void invoices directly from code using SQL stored procedures.
  • Connect securely using OAuth and modern cryptography, including TLS 1.2, SHA-256, and ECC.

Many users access live QuickBooks Online data from preferred analytics tools like Power BI and Excel, directly from databases with federated access, and use CData solutions to easily integrate QuickBooks Online data with automated workflows for business-to-business communications.

For more information on how customers are solving problems with CData's QuickBooks Online solutions, refer to our blog: https://www.cdata.com/blog/360-view-of-your-customers.


Getting Started


Connecting to QuickBooks Online Data

Connecting to QuickBooks Online data looks just like connecting to any relational data source. Create a connection string using the required connection properties. For this article, you will pass the connection string as a parameter to the create_engine function.

QuickBooks Online uses the OAuth authentication standard. OAuth requires the authenticating user to log in through the browser. To authenticate using OAuth, you can use the embedded OAuthClientId, OAuthClientSecret, and CallbackURL or you can obtain your own by registering an app with Intuit. Additionally, if you want to connect to sandbox data, set UseSandbox to true.

See the Getting Started chapter of the help documentation for a guide to using OAuth.

After installing the CData QuickBooks Online Connector, follow the procedure below to install the other required modules and start accessing QuickBooks Online through Python objects.

Install Required Modules

Use the pip utility to install the required modules and frameworks:

pip install petl
pip install pandas

Build an ETL App for QuickBooks Online Data in Python

Once the required modules and frameworks are installed, we are ready to build our ETL app. Code snippets follow, but the full source code is available at the end of the article.

First, be sure to import the modules (including the CData Connector) with the following:

import petl as etl
import pandas as pd
import cdata.quickbooksonline as mod

You can now connect with a connection string. Use the connect function for the CData QuickBooks Online Connector to create a connection for working with QuickBooks Online data.

cnxn = mod.connect("InitiateOAuth=GETANDREFRESH;OAuthSettingsLocation=/PATH/TO/OAuthSettings.txt")")

Create a SQL Statement to Query QuickBooks Online

Use SQL to create a statement for querying QuickBooks Online. In this article, we read data from the Customers entity.

sql = "SELECT DisplayName, Balance FROM Customers WHERE FullyQualifiedName = 'Cook, Brian'"

Extract, Transform, and Load the QuickBooks Online Data

With the query results stored in a DataFrame, we can use petl to extract, transform, and load the QuickBooks Online data. In this example, we extract QuickBooks Online data, sort the data by the Balance column, and load the data into a CSV file.

Loading QuickBooks Online Data into a CSV File

table1 = etl.fromdb(cnxn,sql)

table2 = etl.sort(table1,'Balance')

etl.tocsv(table2,'customers_data.csv')

In the following example, we add new rows to the Customers table.

Adding New Rows to QuickBooks Online

table1 = [ ['DisplayName','Balance'], ['NewDisplayName1','NewBalance1'], ['NewDisplayName2','NewBalance2'], ['NewDisplayName3','NewBalance3'] ]

etl.appenddb(table1, cnxn, 'Customers')

With the CData Python Connector for QuickBooks Online, you can work with QuickBooks Online data just like you would with any database, including direct access to data in ETL packages like petl.

Free Trial & More Information

Download a free, 30-day trial of the CData Python Connector for QuickBooks Online to start building Python apps and scripts with connectivity to QuickBooks Online data. Reach out to our Support Team if you have any questions.



Full Source Code


import petl as etl
import pandas as pd
import cdata.quickbooksonline as mod

cnxn = mod.connect("InitiateOAuth=GETANDREFRESH;OAuthSettingsLocation=/PATH/TO/OAuthSettings.txt")")

sql = "SELECT DisplayName, Balance FROM Customers WHERE FullyQualifiedName = 'Cook, Brian'"

table1 = etl.fromdb(cnxn,sql)

table2 = etl.sort(table1,'Balance')

etl.tocsv(table2,'customers_data.csv')

table3 = [ ['DisplayName','Balance'], ['NewDisplayName1','NewBalance1'], ['NewDisplayName2','NewBalance2'], ['NewDisplayName3','NewBalance3'] ]

etl.appenddb(table3, cnxn, 'Customers')

Ready to get started?

Download a free trial of the QuickBooks Online Connector to get started:

 Download Now

Learn more:

QuickBooks Online Icon QuickBooks Online Python Connector

Python Connector Libraries for QuickBooks Online Data Connectivity. Integrate QuickBooks Online with popular Python tools like Pandas, SQLAlchemy, Dash & petl.