Interface python with sql database11
Interface python with sql database11
syllabus
Computer Science 2023-24
Chapter 11
Interface python
with SQL Database
SQL Connectors
We must download a separate DB API module for each database we
need to access. Suppose we need to access an Oracle database as
well as a MySQL database, we 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
Here we are using mysql as back end database because of it is open source,free
and portable and widely used. Any one of mysql-connector or MySQLdb can be
used for database programming.
1. mysql-connector
MySQL-Connector enables Python programs to access MySQL databases, using an
API that is compliant with the Python Database API Specification v2.0 (PEP 249). It
is written in pure Python and does not have any dependencies except for the
Python Standard Library.
Steps to use mysql-connector
1. Download Mysql API ,exe file and install it.(click here to download)
2. Install Mysql-Python Connector (Open command prompt and execute
command) >pip install mysql-connector
3. Now connect Mysql server using python
4. Write python statement in python shell import mysql.connector
If no error message is shown means mysql connector is properly installed
Cursor object :
The MySQLCursor class instantiates objects that can execute operations such as SQL
statements. Cursor objects interact with the MySQL server using a MySQLConnection
object.
How to create cursor object and use it
import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",passwd="root")
mycursor=mydb.cursor()
mycursor.execute("create database if not exists school")
mycursor.execute("show databases")
for x in mycursor:
print(x)
Through line 4 we are creating a database named school if it is already not created with
the help of cursor object.
Line 5 executes the sql query show databases and store result in mycursor as collection
,whose values are being fetched in x variable one by one.
On execution of above program school database is created and a list of available databases
is shown.
MySQLCursor.fetchall() Method
The method fetches all (or all remaining) rows of a query result set and
returns a list of tuples. If no more rows are available, it returns an empty
list.
Interface with Python
Interface python
with SQL Database
How to fetch one record of a table at run time
import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",passwd="root",database="sc
hool")
mycursor=mydb.cursor()
mycursor.execute("select * from student")
row=mycursor.fetchone()
while row is not None:
print(row)
row = mycursor.fetchone()
MySQLCursor.fetchone() Method
This method retrieves the next row of a query result set and returns a single sequence, or
None if no more rows are available. By default, the returned tuple consists of data
returned by the MySQL server, converted to Python objects.
MySQLCursor.fetchmany() Method
rows = cursor.fetchmany(size=1)
This method fetches the next set of rows of a query result and returns a list of tuples. If no
more rows are available, it returns an empty list.
Interface with Python
Interface python
with SQL Database
rowcount : Rows affected by Query. We can get number of rows affected by the query by
using rowcount. We will use one SELECT query here.
import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",passwd="root",database="sc
hool")
mycursor=mydb.cursor()
mycursor = mydb.cursor(buffered=True)
mycursor.execute("select * from student")
noofrows=mycursor.rowcount
print("No of rows in student table are",noofrows)
buffered=True
We have used my_cursor as buffered cursor.
my_cursor = my_connect.cursor(buffered=True)
This type cursor fetches rows and buffers them after getting output from MySQL database.
We can use such cursor as iterator. There is no point in using buffered cursor for single
fetching of rows.If we don’t use buffered cursor then we will get -1 as output from
rowcount