insert into access db with python/pyodbc

  • Last Update :
  • Techknowledgy :

So try it with single quotes.

SQL = ""
"INSERT INTO AssetDetails
   [Reporting Account Number],
   [As Of Date],
   [Asset Type],
   [Security Description 1],
   [Shares / Par],
   [Base Price],
   [Base Cost],

Suggestion : 2


To get started, run the following sample script. Create a file called, and add each code snippet as you go.

> python


import pyodbc
# Some other example server values are
# server = 'localhost\sqlexpress'
for a named instance
# server = 'myserver,port'
# to specify an alternate port
server = ''
database = 'mydb'
username = 'myusername'
password = 'mypassword'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 18 for SQL Server};SERVER=' + server + ';DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
cursor = cnxn.cursor()

The cursor.executefunction can be used to retrieve a result set from a query against SQL Database. This function accepts a query and returns a result set, which can be iterated over with the use of cursor.fetchone().

#Sample select query
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
row = cursor.fetchone()

Suggestion : 3

pyodbc is going to be the bridge between SQL and Python. This makes access easy to ODBC (Open Database Connectivity) databases. ODBC was developed by SQL Access Group in the early ’90s as an API (Application Programming Interface) to access databases. These DBMS (Database management Systems) are compliant with ODBC.,We are going to use the library named pyodbc to connect python to SQL. This will give us the ability to use the dynamic nature of Python to build and run queries like SQL. These two languages together are a formidable force in our hands. These together can take your code to the pinnacle of automation and efficiency.,Now you can start using Python to work upon your data which rests in SQL Databases. Once you brought it as DataFrame, then all the operations are usual Pandas operations. Many of these operations were not possible in SQL.,Notice the output above, it’s the same as you would expect from any local data file (say .csv), imported in Python as Pandas DataFrame.

Install pyodbc using pip or visit their webpage.

pip install pyodbc

and then import the library in your Jupyter notebook

import pyodbc
  • For Trusted Connection:
connection_string = ("Driver={SQL Server Native Client 11.0};"
  • For Non-Trusted Connection:
connection_string = ("Driver={SQL Server Native Client 11.0};"

The other way is to run the following query in SQL.

# Lets summarise the codes till now
import pyodbc
connection_string = ("Driver={SQL Server Native Client 11.0};"
connection = pyodbc.connect(connection_string)
# Initialise the Cursor
cursor = connection.cursor()
# Executing a SQL Query
cursor.execute('SELECT TOP(10) * FROM State_Population')
for row in cursor:


(AL, under18, 2012, 1117489.0)
(AL, total, 2012, 4817528.0)
(AL, under18, 2010, 1130966.0)
(AL, total, 2010, 4785570.0)
(AL, under18, 2011, 1125763.0)
(AL, total, 2011, 4801627.0)
(AL, total, 2009, 4757938.0)
(AL, under18, 2009, 1134192.0)
(AL, under18, 2013, 1111481.0)
(AL, total, 2013, 4833722.0)