Skip to main content
Question

Looking for simplest example to access quickbase using python

  • Aug 11, 2018 9:02 PM UTC
  • 0 replies
  • 1435 views

Can someone point me to examples that show how a quickbase/db can be accessed from the command line/using python -?  We would like to access, add, delete, change records and create reports - and in addition to the GUI provided, do such using CLI tools and python (saw pybase on github, am having some difficulty with it - unless someone can provide a complete example -?)
This topic has been closed for replies.

  • Registered
  • Aug 14, 2018 8:34 PM UTC
Use the API --> https://help.quickbase.com/api-guide/index.html

I use node.js so I'm not familiar with Python, but it all essentially works the same.

See this library:

http://docs.python-requests.org/en/master/

This should allow you to do whatever your heart desires.

Hope this helps,

~Rob

Has anyone gotten this to work?

Yes, do you still need help?

I'm all set on getting Python to work with the API, but if you have any suggestions or resources I'd love to hear about them and/or share what I've done


  • Registered
  • Aug 6, 2019 7:54 PM UTC
Hi,

Been using pyqb (https://github.com/sjmh/pyqb) for all of my python work w/the Quickbase API. It's not complete, but easy to fork and add to.

  • Registered
  • Nov 7, 2019 10:21 PM UTC
I know that this is old...but I got here from a Google search for simple example so I wanted to help the next guy/gal out.  Here is my "simplest example."
#!python3
import requests
import xmltodict
from xml.etree import ElementTree as et
import pprint
pp = pprint.PrettyPrinter(indent=2)

# ----------Add your personal stuff here:-----------
yourEmail = 'your@email.here'
yourPassword = 'verygoodpassword'
aTableID = 'xxx5yyyyy'
companyURLPrefix = 'joescookies'

# -------------Authenticate to get a ticket--------------
# one could use a user token here instead.
headers = {
    "Content-Type": "application/xml",
    "Accept-Charset": "utf-8",
    "QUICKBASE-ACTION": "API_Authenticate"
}
# build an XML payload
payload = et.Element('qdbapi')
username = et.SubElement(payload, 'username')
username.text = yourEmail
password = et.SubElement(payload, 'password')
password.text = yourPassword
# hours = et.SubElement(payload, 'hours')  # Optional
# hours.text = '24'  # Optional
# make the payload ready for shipping
humanPayload = et.tostring(payload)
url2 = f'https://{companyURLPrefix}.quickbase.com/db/main'
resp = requests.post(url2, data=humanPayload, headers=headers)
# pp.pprint(vars(resp))
# Parse the response so we can pull out the ticket
parsed = et.XML(resp.text)
authticket = parsed.find('ticket').text

# -----------Using the authticket we can actually do some work--------------
# this example is to get the API_GetDBInfo
url3 = f'https://{companyURLPrefix}.quickbase.com/db/{aTableID}'
headersGetDB = {
    "Content-Type": "application/xml",
    "Accept-Charset": "utf-8",
    "QUICKBASE-ACTION": "API_GetDBInfo"
}
# build another XML payload
payloadGetDB = et.Element('qdbapi')
ticket = et.SubElement(payloadGetDB, 'ticket')
ticket.text = authticket
# make the payload ready for shipping
humanPayloadGetDB = et.tostring(payloadGetDB)
respgetdb = requests.post(url3, data=humanPayloadGetDB, headers=headersGetDB)
# print(et.XML(respgetdb.text).find('errtext').text)  # this checks for the errtext
# pp.pprint(vars(respgetdb))  # this pumps out the full response
# This makes the response a little nicer to sort through
parsedGetDB = et.XML(respgetdb.text)
# This is some of the info enbedded into the XML response.
parsedGetDB.find('dbname').text
parsedGetDB.find('lastModifiedTime').text
parsedGetDB.find('lastRecModTime').text
parsedGetDB.find('createdTime').text
parsedGetDB.find('numRecords').text
parsedGetDB.find('mgrID').text
parsedGetDB.find('mgrName').text
parsedGetDB.find('time_zone').text
parsedGetDB.find('version').text
​


------------------------------
David Choi
------------------------------

  • Registered
  • Feb 14, 2020 8:22 PM UTC
I use qunect and pyodbc.  See qunect.com.  It's so much easier to use SQL than the half-baked open source libraries like pyqb

------------------------------
John Hubert
------------------------------