CONNECTING PYTHON WITH SQL
DATABASE
Introduction
• The Python standard for database interfaces is the Python DB-API.
Most Python database interfaces adhere to this standard.
• We can choose the right database for our application. Python
Database API supports a wide range of database servers such as −
• GadFly
• mSQL
• MySQL
• PostgreSQL
• Microsoft SQL Server 2000
• Informix
• Interbase
• Oracle
• Sybase
Download DB API
You must download a separate DB API module for each database
you need to access. For example, if you need to access an Oracle
database as well as a MySQL database, you must download both
the Oracle and the MySQL database modules.
The DB API provides a minimal standard for working with
databases using Python structures and syntax wherever possible.
This API includes the following −
• Importing the API module.
• Acquiring a connection with the database.
• Issuing SQL statements and stored procedures.
• Closing the connection
What is MySQLdb?
MySQLdb is an interface for connecting to a MySQL database server
from Python. It implements the Python Database API v2.0 and is built
on top of the MySQL C API.
How do I Install MySQLdb?
Before proceeding, you make sure you have MySQLdb installed on
your machine. Just type the following in your Python script and
execute it −
#!/usr/bin/python
import MySQLdb
If it produces the following result, then it means MySQLdb module is
not installed −
Traceback (most recent call last):
File "[Link]", line 3, in <module>
import MySQLdb
ImportError: No module named MySQLdb
Connector for Python
Installing Connector/Python on Microsoft Windows
Managing all of your MySQL products, including MySQL
Connector/Python, with MySQL Installer is the
recommended approach. It handles all requirements
and prerequisites, configurations, and upgrades.
Prerequisite. The Microsoft Visual C++ 2015
Redistributable must be installed on your system.
To install MySQLdb module, download it from
[Link]
Setup installation steps
1. Install Python 2.7.0(ignore if already done)
2. Install MySQL 5.1.33 Server
3. Install Microsoft Visual C++ 2015
4. Install MySQL-Python Connector
Database Connection
• Before connecting to a MySQL database, make
sure of the followings −
• You have created a database TESTDB.
• You have created a table EMPLOYEE in TESTDB.
• This table has fields FIRST_NAME, LAST_NAME,
AGE, SEX and INCOME.
• User ID "root" and password "1234" are set to
access TESTDB.
• Python module MySQLdb is installed properly on
your machine.
Example1-Test Connection
Following is the example of connecting with MySQL database "TESTDB“
#import [Link]
import MySQLdb
# Open database connection
db = [Link]("[Link]","root","1234","testdb")
# prepare a cursor object using cursor() method
cursor = [Link]()
# execute SQL query using execute() method.
[Link]("SELECT VERSION()")
# Fetch a single row using fetchone() method.
data = [Link]()
print ("Database version : %s " % data)
# disconnect from server
[Link]()
While running this script, it is producing the following result in
my windows machine.
Database version : 5.1.33-community
Example2-Creation of table
import MySQLdb
# Open database connection
db = [Link]("[Link]","root","1234","testdb" )
# prepare a cursor object using cursor() method
cursor = [Link]()
#Drop table if it already exist using execute() method.
[Link]("DROP TABLE IF EXISTS EMPLOYEE")
# Create table as per requirement
sql = """CREATE TABLE EMPLOYEE (FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),AGE INT,SEX CHAR(1), INCOME FLOAT )"""
# execute SQL query using execute() method.
[Link](sql)
# disconnect from server
[Link]()
Example3-Insertion
import MySQLdb
db = [Link]("[Link]","root","1234","testdb")
cursor = [Link]()
name=raw_input("What is your first name? ") #raw_input() for String input
lname=raw_input("What is your last name? ")
age = input("What is your age? ") #input() for Numeric
inputgender=raw_input("What is your gender?")
income=input("What is your monthly income?")
# Prepare SQL query to INSERT a record into the database.
try:
[Link]("""INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE,SEX,
INCOME)
VALUES (%s,%s,%s,%s,%s)""",(name,lname,age,gender,income))
# Commit your changes in the database
[Link]()
except:
# Rollback in case there is any error
[Link]()
[Link]()
Example4-Updation of record
import MySQLdb
db = [Link]("[Link]","root","1234","testdb")
cursor = [Link]()
# Prepare SQL query to UPDATE required records
sql = "UPDATE EMPLOYEE SET AGE = AGE + 5 \
WHERE SEX = '%c'" % ('M')
try:
# Execute the SQL command
[Link](sql)
# Commit your changes in the database
[Link]()
except:
# Rollback in case there is any error
[Link]()
# disconnect from server
[Link]()
READ Operation
• READ Operation on any database means to fetch some useful
information from the database.
• Once our database connection is established, you are ready to
make a query into this database. You can use
either fetchone() method to fetch single record
or fetchall() method to fetech multiple values from a database
table.
• fetchone() − It fetches the next row of a query result set. A result
set is an object that is returned when a cursor object is used to
query a table.
• fetchall() − It fetches all the rows in a result set. If some rows have
already been extracted from the result set, then it retrieves the
remaining rows from the result set.
• rowcount − This is a read-only attribute and returns the number of
rows that were affected by an execute() method.
Example-Read operation
The following procedure queries all the records from EMPLOYEE table having salary more than 1000-
import MySQLdb
# Open database connection
db = [Link]("[Link]","root","1234","TESTDB" )
# prepare a cursor object using cursor() method
cursor = [Link]()
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)
try:
# Execute the SQL command
[Link](sql)
# Fetch all the rows in a list of lists.
results = [Link]()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# Now print fetched result
print (fname, lname, age, sex, income )
except:
print "Error: unable to fecth data"
# disconnect from server
[Link]()
Important links
1. Run python 2.7.14
2. To install MySQLdb module, download it from
[Link]
3. Prerequisite. The Microsoft Visual C++ 2015
Redistributable must be installed on your system
4. Microsoft MySql intaller or
Download MySQL from [Link]
OR [Link]
Python DB-API
• Python DB-API
– Database application programming interface
– Portable across several databases
– Consists of Connection and Cursor data
objects
• Connection data object (Fig. 22.30)
– Accesses database through four methods
• Cursor data object (Fig. 22.31)
– Manipulates and retrieves data
15
Python DB-API
Connection Data Objects Description
close Closes the connection to the database.
commit Commits (saves) a transaction (i.e., interaction with a database through SQL keywords
and commands).
rollback Exits a pending transaction without saving changes. Returns the user to the beginning
of the transaction.
cursor Returns a new Cursor object or the current connection.
Fig. 22.30 Connection data objects for Python DB-API.
Cursor Data Objects Description
rowcount Returns the number of rows retrieved by the last execute method call.
close Closes the Cursor object.
execute( operation ) Executes a database query or command. Return values not defined.
executemany( operation, Executes a database query or command against a set of parameters. Return values not
defined.
parameters )
fetchone Returns the next row of a query result.
fetchmany( size ) Returns a set of rows—defined in the parameter—for a query result set.
16 fetchall
Returns all the rows of a query result set.
Fig. 22.31 Some Cursor data objects for PB-API.