Monday, 11 May 2020

Python with MySQL database programs

install python connector

python -m pip install mysql-connector

#verify the mysql connectivity
import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd"
)

print(mydb)

<mysql.connector.connection_cext.CMySQLConnection object at 0x000000E2CA88AB70>
#create a database
#display the databases
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE School")
mycursor.execute("SHOW DATABASES")

for x in mycursor:
  print(x)
  
('employee',)
('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('school',)
('sys',)
('world',)



import socket
socket.getaddrinfo('127.0.0.1', 3306)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'p@ssw0rd' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'p@ssw0rd';

#connect with School database 
#create a table
import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE Student (rollnumber int, firstname varchar(50), lastname varchar(50), city varchar(50))")




mycursor.execute("SHOW TABLES")

for x in mycursor:
  print(x)
  
('student',)

#Drop table
mycursor.execute("DROP TABLE Student")
for x in mycursor:
  print(x)
  
  
  
#create a table with auto increment column
import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)

mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE Student (rollnumber INT AUTO_INCREMENT PRIMARY KEY, firstname varchar(50), lastname varchar(50), city varchar(50))")
mycursor.execute("show tables")
for x in mycursor:
  print(x)
('student',)

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)

mycursor = mydb.cursor()

sql = "INSERT INTO student (firstname, lastname,city) VALUES (%s, %s, %s)"
val = ("Sankara","Narayanan","Pallathur")
mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "record inserted.")

1 record inserted.


mycursor = mydb.cursor()

sql = "INSERT INTO student (firstname, lastname,city) VALUES (%s, %s, %s)"
val = [
  ('Prathap','Pothan','திருவனந்தப்புரம்'),
  ('Rajini','Kanth','Bangalore'),
  ('Vijay', 'Balani','Bangalore'),
  ('Anbu','Sudha','Melasivapuri')
]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "was inserted.")

4 was inserted.


Get Inserted identity ids:

sql = "INSERT INTO student (firstname, lastname,city) VALUES (%s, %s, %s)"
val = ("Arun","Vijay","Chennai")
mycursor.execute(sql, val)

mydb.commit()

print("1 record inserted, ID:", mycursor.lastrowid)

1 record inserted, ID: 6
select from table:

mycursor.execute("SELECT * FROM student")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
  
  
(1, 'Sankara', 'Narayanan', 'Pallathur')
(2, 'Prathap', 'Pothan', 'திருவனந்தப்புரம்')
(3, 'Rajini', 'Kanth', 'Bangalore')
(4, 'Vijay', 'Balani', 'Bangalore')
(5, 'Anbu', 'Sudha', 'Melasivapuri')
(6, 'Arun', 'Vijay', 'Chennai')


#select columns
mycursor.execute("SELECT rollnumber as RollNumber, concat(firstname, ' ' ,lastname) as Name, city as City FROM student")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
  
(1, 'Sankara Narayanan', 'Pallathur')
(2, 'Prathap Pothan', 'திருவனந்தப்புரம்')
(3, 'Rajini Kanth', 'Bangalore')
(4, 'Vijay Balani', 'Bangalore')
(5, 'Anbu Sudha', 'Melasivapuri')
(6, 'Arun Vijay', 'Chennai')


Fetch one record:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM Student")

myresult = mycursor.fetchone()

print(myresult)
myresult = mycursor.fetchone()

print(myresult)
myresult = mycursor.fetchone()

print(myresult)
myresult = mycursor.fetchone()

print(myresult)

(1, 'Sankara', 'Narayanan', 'Pallathur')
(2, 'Prathap', 'Pothan', 'திருவனந்தப்புரம்')
(3, 'Rajini', 'Kanth', 'Bangalore')
(4, 'Vijay', 'Balani', 'Bangalore')
#where condition
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student WHERE city ='Bangalore'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
  
  
(3, 'Rajini', 'Kanth', 'Bangalore')
(4, 'Vijay', 'Balani', 'Bangalore')


Like Condition:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student WHERE lastname LIKE '%an%'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
  
    (1, 'Sankara', 'Narayanan', 'Pallathur')
(2, 'Prathap', 'Pothan', 'திருவனந்தப்புரம்')
(3, 'Rajini', 'Kanth', 'Bangalore')
(4, 'Vijay', 'Balani', 'Bangalore')
  
  
  
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student WHERE lastname LIKE '%an'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
  
  (1, 'Sankara', 'Narayanan', 'Pallathur')
  (2, 'Prathap', 'Pothan', 'திருவனந்தப்புரம்')
  
  
 Prevent SQL Injection:
 
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student WHERE city = %s"
city = ("Bangalore", )
mycursor.execute(sql, city)
myresult = mycursor.fetchall()

for x in myresult:
  print(x)
  
  
  (3, 'Rajini', 'Kanth', 'Bangalore')
  (4, 'Vijay', 'Balani', 'Bangalore')
  
  
Order by example (ascending : default):
 
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student order by city"
mycursor.execute(sql)
myresult = mycursor.fetchall()

for x in myresult:
  print(x)
  
(3, 'Rajini', 'Kanth', 'Bangalore')
(4, 'Vijay', 'Balani', 'Bangalore')
(6, 'Arun', 'Vijay', 'Chennai')
(5, 'Anbu', 'Sudha', 'Melasivapuri')
(1, 'Sankara', 'Narayanan', 'Pallathur')
(2, 'Prathap', 'Pothan', 'திருவனந்தப்புரம்')



Order by descending example:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student order by lastname desc"
mycursor.execute(sql)
myresult = mycursor.fetchall()

for x in myresult:
  print(x)
  
  
(6, 'Arun', 'Vijay', 'Chennai')
(5, 'Anbu', 'Sudha', 'Melasivapuri')
(2, 'Prathap', 'Pothan', 'திருவனந்தப்புரம்')
(1, 'Sankara', 'Narayanan', 'Pallathur')
(3, 'Rajini', 'Kanth', 'Bangalore')
(4, 'Vijay', 'Balani', 'Bangalore')



Delete a record:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()

sql = "DELETE FROM student WHERE city = %s"
adr = ("திருவனந்தப்புரம்", )
mycursor.execute(sql, adr)
mydb.commit()
print(mycursor.rowcount, "record(s) deleted")

1 record(s) deleted


#drop a table

mycursor = mydb.cursor()
sql = "DROP TABLE student"
mycursor.execute(sql)


#Drop Only if Exist

mycursor = mydb.cursor()
sql = "DROP TABLE IF EXISTS student"
mycursor.execute(sql)



#update record with condition
#avoid sql injection

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)
mycursor = mydb.cursor()

sql = "UPDATE Student SET lastname = %s WHERE lastname = %s"
val = ("Balaji", "Balani")
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record(s) affected")

1 record(s) affected
#limit example

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)


mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM Student LIMIT 5")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
  
(1, 'Sankara', 'Narayanan', 'Pallathur')
(3, 'Rajini', 'Kanth', 'Bangalore')
(4, 'Vijay', 'Balaji', 'Bangalore')
(5, 'Anbu', 'Sudha', 'Melasivapuri')
(6, 'Arun', 'Vijay', 'Chennai')
  
  
#limit with offset example

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="p@ssw0rd",
  database="school"
)

mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM Student LIMIT 3 offset 2")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
  
  
(4, 'Vijay', 'Balaji', 'Bangalore')
(5, 'Anbu', 'Sudha', 'Melasivapuri')
(6, 'Arun', 'Vijay', 'Chennai')

No comments:

Post a Comment

Flume - Simple Demo

// create a folder in hdfs : $ hdfs dfs -mkdir /user/flumeExa // Create a shell script which generates : Hadoop in real world <n>...