30
db = MySQLdb.connect(“localhost”,“abctest”,“python121”,“TESTDB”)
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Drop table if it already exist using execute() method.
cursor.execute(“DROP TABLE IF EXISTS STAFF”)
# Create table as per requirement sql = “““CREATE TABLE STAFF (FIRST_NAME
CHAR(20) NOT NULL,LAST_NAME CHAR(20),AGE INT,SEX CHAR(1),INCOME
FLOAT )”””
cursor.execute(sql)
# disconnect from server
db.close()
INSERT Operation:
INSERT operation is required when you want to create your records into a database table.
Example to create a record into STAFF table:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect(“localhost”,“abctest”,“python121”,“TESTDB” )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = “““INSERT INTO STAFF(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME)
VALUES (‘Tom’, ‘David’, 20, ‘M’, 11000)”””
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
30
# disconnect from server
db.close()
Above example can be written as follows to create SQL queries dynamically:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect(“localhost”,“abctest”,“python121”,“TESTDB” )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = “INSERT INTO STAFF(FIRST_NAME, \LAST_NAME, AGE, SEX, INCOME) \
VALUES (‘%s’, ‘%s’, ‘%d’, ‘%c’, ‘%d’ )” % \ (‘Tom’, ‘David’, 20, ‘M’, 11000)
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
READ Operation:
READ Operation on database means to fetch some useful information from the database.
Once our database connection is established, we are ready to make a query into this
database. We can use either fetchone() method to fetch single record or fetchall() method
to fetech multiple values from a database table.
• fetchone(): This method 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(): This method fetches all the rows in a result set. If some rows have already
31
the result set.
• rowcount: This is a read-only attribute and returns the number of rows that were
affected by an execute() method.
Example to query all the records from STAFF table having salary more than 5000:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect(“localhost”,“abctest”,“python121”,“TESTDB” )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = “SELECT * FROM STAFF \
WHERE INCOME > ‘%d’” % (1000)
try:
# Execute the SQL command
cursor.execute(sql)
# Fetch all the rows in a list of lists.
results = cursor.fetchall()
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=%s,lname=%s,age=%d,sex=%s,income=%d” % \
(fname, lname, age, sex, income )
except:
print “Error: unable to fecth data”
# disconnect from server
db.close()
27
Output:
fname=Tom, lname=David, age=20, sex=M, income=11000
Update Operation:
UPDATE Operation on any database means to update one or more records, which are
already available in the database. Following is the procedure to update all the records
having SEX as ‘M’. Here, we will increase AGE of all the males by one year.
For Example:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect(“localhost”,“abctest”,“python121”,“TESTDB” )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to UPDATE required records
sql = “UPDATE STAFF SET AGE = AGE + 1
WHERE SEX = ‘%c’” % (‘M’)
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
DELETE Operation:
31
Following is the procedure to delete all the records from STAFF where AGE is more than
20:
For Example:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect(“localhost”,“abctest”,“python121”,“TESTDB” )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to DELETE required records
sql = “DELETE FROM STAFF WHERE AGE > ‘%d’” % (20)
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
Performing Transactions:
Transactions are a mechanism that ensures consistency of data. Transactions should have
the following properties:
• Atomicity: Either a transaction completes or nothing happens at all.
• Consistency: A transaction must start in a consistent state and leave the system in a
consistent state.
• Isolation: Intermediate results of a transaction are not visible outside the current
transaction.
• Durability: Once a transaction was committed, the effects are persistent, even after a
26
The Python DB API 2.0 provides two methods to either commit or rollback a transaction.
For Example:
# Prepare SQL query to DELETE required records
sql = “DELETE FROM STAFF WHERE AGE > ‘%d’” % (20)
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
COMMIT Operation:
Commit is the operation, which gives a green signal to database to finalize the changes,
and after this operation, no change can be reverted back.
For Example:
db.commit()
ROLLBACK Operation:
If you are not satisfied with one or more of the changes and you want to revert back those
changes completely, then use rollback() method.
For Example:
db.rollback()
Disconnecting Database:
To disconnect Database connection, use close() method.
28
db.close()
If the connection to a database is closed by the user with the close() method, any
outstanding transactions are rolled back by the DB. However, instead of depending on any
of DB lower level implementation details, your application would be better off calling
commit or rollback explicitly.
Handling Errors:
There are many sources of errors. A few examples are a syntax error in an executed SQL
statement, a connection failure, or calling the fetch method for an already canceled or
finished statement handle. The DB API defines a number of errors that must exist in each
database module. The following table lists these exceptions.
Exception Description
Warning Used for non-fatal issues. Must subclass StandardError.
Error Base class for errors. Must subclass StandardError.
InterfaceError
Used for errors in the database module, not the database itself. Must subclass Error.
DatabaseError
Used for errors in the database. Must subclass Error. DataError Subclass of DatabaseError
that refers to errors in the data.
OperationalError
Subclass of DatabaseError that refers to errors such as the loss of a connection to the
database. These errors are generally outside of the control of the Python scripter.
IntegrityError
Subclass of DatabaseError for situations that would damage the relational integrity, such
as uniqueness constraints or foreign keys.
Documents you may be interested
Documents you may be interested