One of the most convenient methods to connect to an external database or access cloud data from Python is via ODBC. Devart has developed a range of ODBC Drivers for Python to work with databases and cloud services.
If you don't have Python installed on your machine, go to the Python official website, download the appropriate installer and run it. You will also need to install the pyodbc module — the easiest way to do that is by using the pip install pyodbc command in the Python interactive mode. Next, you need to download the ODBC Driver for Salesforce. To use the ODBC driver as a translation layer between the application and the database, you need to configure it by following the installation instructions.
Here’s an example to show you how to connect to Salesforce via Devart ODBC Driver in Python. First we import the pyodbc module, then create a connection to the database, insert a new row and read the contents of the EMP table while printing each row to the Python interactive console. To execute the script, you can type the code directly in the interactive console or add the code to a file with the .py extension and run the file from the command prompt.
Step 1: Connect
import pyodbc
cnxn = pyodbc.connect('DRIVER={Devart ODBC Driver for Salesforce};User ID=myuserid;Password=mypassword;Security Token=mysecuritytoken')
Step 2: Insert a row
Here's a simple example of how to execute an insert statement to test the connection to the database. The script inserts a new record to the EMP table.
cursor = cnxn.cursor()
cursor.execute("INSERT INTO EMP (EMPNO, ENAME, JOB, MGR) VALUES (535, 'Scott', 'Manager', 545)")
Step 3: Execute query
The cursor.execute() function retrieves rows from the select query on a dataset. The cursor.fetchone() function iterates over the result set returned by cursor.execute() while the print() function prints out all records from the table to the console.
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM EMP")
row = cursor.fetchone()
while row:
print (row)
row = cursor.fetchone()
cursor.close()
cnxn.close()