Interface Python with MySQL1
Interface Python with MySQL1
Reservation systems store passenger details for reserving seats and later for
sendingmessages or printing tickets.
In schools, student details are saved for various purposes like attendance,
fee collections, exams, and report cards.
Python allows us to connect with all types of databases, including Oracle, SQL
Server, and MySQL.
To build a bridge to connect Python and MySQL, so that data can travel both
ways, we need a connector called mysql.connector
importmysql.connector
Or
importmysql.connector as c
Here “c” is an alias, so every time we can use “c” in place of “mysql.connector”
<conn-object>=mysql.connector.connect(host=<server_name>,
user=<user_name>,
passwd=<password>,
[,database=<database>])
user='root',
password='12345',
database='db'
<cursor_obj>= <connection_obj>.cursor()
Eg:
cursor=con.cursor()
Note: Result set refers to a logical set of records that are fetched from the
database by executing an SQL query and made available to the application
program.
2. fetchone() : it return one record from the result set. i.e. first time it will
return first record, next time it will return second record and so on. If no
more record it will return None
data= cursor.fetchone()
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='db')
if con.is_connected():
print("Successfully connected")
# To create table
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='mydb')
cursor=con.cursor()
cursor.execute(“create table emp(Eid int, Ename varchar(20),salary float(7,2))”)
print(“Table created”)
# To Describe table Structure
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='mydb')
cursor=con.cursor()
cursor.execute(“desc emp”)
for i in cursor:
print(i)
Output:
('Eid', 'int', 'YES', '', None, '')
('Ename', 'varchar(20)', 'YES', '', None, '')
('salary', 'float(7,2)', 'YES', '', None, '')
INSERT and UPDATE operation are executed in the same way we execute
SELECT query using execute() but one thing to remember, after executing insert
or update query we must commit our query using connection object with
commit().
For e.g. (if our connection object name is con)
con.commit()
Commit() function is used to save the changes in a database physically.
After performing :insert,update and delete queries, call the commit() function
with the help of an connection object.
# To delete record
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='mydb')
cursor=con.cursor()
Eid=int(input("Enter eid to delete"))
cursor.execute("Delete from emp where Eid={ }".format(Eid))
con.commit()
print("Record deleted")
Output:
#Using fetchall() function :extracting all records in the form of list of tuples.
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='mydb')
cursor=con.cursor()
cursor.execute("select * from emp")
data=cursor.fetchall()
print(data)
data=cursor.fetchall() #repeat same cmd will return empty list
print(data)
print(cursor.rowcount)
Output:
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='mydb')
cursor=con.cursor()
cursor.execute("select * from emp")
data=cursor.fetchone()
print(data)
count=cursor.rowcount
print("Total number of rows retrieved in resultset:",count)
output:
#using fetchmany(size)
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='mydb')
cursor=con.cursor()
cursor.execute("select * from emp")
data=cursor.fetchmany(3)
count=cursor.rowcount
print("Total number of rows retrieved in resultset:",count)
for row in data:
print(row)
Ex:
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='mydb')
cursor=con.cursor()
cursor.execute("select * from emp")
data=cursor.fetchmany(2)
data=cursor.fetchone()
data=cursor.fetchone()
print(data)
count=cursor.rowcount
print("Total number of rows retrieved in resultset:",count)
output:
cursor=con.cursor()
cursor.execute("select * from emp where Salary=34000")
data=cursor.fetchall()
for row in data:
print(row)
Output:
Parameterized Query
We can pass values to query to perform dynamic search like we want to search for
any student rollnumber entered during runtime or to search any other column
values.
To Create Parameterized query we can use various methods like:
Concatenating dynamic variable to query in which values are entered.
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='db')
cursor=con.cursor()
rno=int(input(“Enter student rollno to search “)
cursor.execute("select * from class12 where Rollno=" +str(rno)
data=cursor.fetchone()
if data!= None:
print(data)
else:
print(“No such rollno exist”)
f%v
where
f is a template string
v specifies the values to be formatted using the template.
“Select * from student where marks>%s” %(75,)
Ex1:
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='db')
cursor=con.cursor()
rno=int(input(“Enter student rollno to search “)
cursor.execute("select * from class12 where Rollno=%s”,(rno,))
data=cursor.fetchone()
if data!= None:
print(data)
else:
print(“No such rollno exist”)
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='db')
cursor=con.cursor()
cursor.execute("select * from class12 where Gender=’%s’ " %(‘F ’))
data=cursor.fetchall()
for row in data:
print(row)
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='db')
cursor=con.cursor()
g=input(“Enter Gender: ”)
cursor.execute("select * from class12 where Gender=’%s’ " %(g))
data=cursor.fetchall()
for row in data:
print(row)
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='db')
cursor=con.cursor()
g=input(“Enter Gender: ”)
m=int(input(“Enter marks >: ”)
cursor.execute(“select * from class12 where Gender=’%s’ and
marks>%s” %(g,m))
data=cursor.fetchall()
for row in data:
print(row)
Or
Using new style{}
import mysql.connector
con=mysql.connector.connect(host='localhost',
user='root',
password='12345',
database='db')
cursor=con.cursor()
g=input(“Enter Gender: ”)
m=int(input(“Enter marks >: ”)
cursor.execute(“select * from class12 where Gender=’{ }’ and marks>{ }”
.format(g,m))
data=cursor.fetchall()
for row in data:
print(row)