Thứ Hai, 27 tháng 5, 2024

52. Chương trình tào lao Python MySQL phần 6

Chúng ta tiếp tục với chương trình tào lao Python MySQL. Chúng ta đã tạo database, đã tạo bảng và đã chèn dữ liệu vào bảng.

Giả sử bây giờ chúng ta cần xóa sinh viên nào đó ra khỏi bảng SinhVien.

Chúng ta sẽ sử dụng lệnh Delete

Tiếp tục với PyCharm. Tùy thuộc vào việc chạy chương trình của các bạn, chúng ta sẽ thử xóa một sinh viên, giả sử chúng tôi sẽ xóa record số 63.

Đất Việt Lập Trình Python MySQL phần 6
 

Đây là lệnh để xóa record có ID là 63

 

sql = "DELETE FROM SinhVien WHERE ID = 63"
mycursor.execute(sql)

 

Chúng ta có code sau. Lưu ý: Bạn xóa record nào có sẵn trong database của bạn chứ không nhất thiết phải là ID 63

 

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password của bạn" ,
  database="mydatabase"
)

mycursor = mydb.cursor()
# Kiem tra database co ton tai hay khong
mycursor.execute("SHOW DATABASES")
databases = mycursor.fetchall()

database_exists = False
for database in databases:
  if 'mydatabase' in database:
    database_exists = True
    break

if database_exists:
  print("Database Ton Tai")
else:
  print("Database Khong Ton Tai")
  mycursor.execute("CREATE DATABASE mydatabase")

# Kiem tra table co ton tai hay khong
mycursor.execute("SHOW TABLES")
tables = mycursor.fetchall()

table_exists = False
for (table,) in tables:
  if ('sinhvien',) in tables:
    print("Table Ton Tai!!")
    table_exists = True
    break

if table_exists:
  print("Table Ton Tai")
else:
  print("Table Khong Ton Tai")
  mycursor.execute("CREATE TABLE SinhVien (id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255), class VARCHAR(100))")


sql = "INSERT INTO SinhVien (name, class) VALUES (%s, %s)"
val = ("Nguyen Van A", "CNTT")
mycursor.execute(sql, val)

mycursor.execute("SELECT name FROM SinhVien")

myresult = mycursor.fetchall()

for x in myresult:
  text = str(x)
  name_text = text.replace("(", "").replace(",)", "").replace("'", "")
  if name_text == val[0]:
    trung_ten = 1
if trung_ten == 1:
  print("Tên này đã có trang database: ")
  print("Bấm số 1 để tiếp tục, bấm số 2 để thoát ")
  s= input()
  if s == "1":
    print("Hello")
    mydb.commit()


print(val[0])
#mydb.commit()

sql = "DELETE FROM SinhVien WHERE ID = 63"
mycursor.execute(sql)


mycursor.execute("SELECT * FROM SinhVien")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)


mycursor.close()
mydb.close()

 

 

Bấm Run để chạy chương trình, chúng ta thấy "dường như" record có ID là 63 đã "biến mất" .

Đất Việt Lập Trình

 

Tuy nhiên, nếu chúng ta tạm thời "khóa" lệnh execute(sql) lai (bằng cách đặt dấu # )  thì chúng ta lại thấy record ID số 63 hiện ra lại.


 

Thực ra, cũng như khi chúng ta muốn INSERT một record vào bảng, chúng ta cần confirm với chương trình là chúng ta thật sự muốn xóa một cái gì đó, chúng ta sẽ cần lệnh mydb.commit(), và đây là chương trình

 

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password của bạn" ,
  database="mydatabase"
)

mycursor = mydb.cursor()
# Kiem tra database co ton tai hay khong
mycursor.execute("SHOW DATABASES")
databases = mycursor.fetchall()

database_exists = False
for database in databases:
  if 'mydatabase' in database:
    database_exists = True
    break

if database_exists:
  print("Database Ton Tai")
else:
  print("Database Khong Ton Tai")
  mycursor.execute("CREATE DATABASE mydatabase")

# Kiem tra table co ton tai hay khong
mycursor.execute("SHOW TABLES")
tables = mycursor.fetchall()

table_exists = False
for (table,) in tables:
  if ('sinhvien',) in tables:
    print("Table Ton Tai!!")
    table_exists = True
    break

if table_exists:
  print("Table Ton Tai")
else:
  print("Table Khong Ton Tai")
  mycursor.execute("CREATE TABLE SinhVien (id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255), class VARCHAR(100))")


sql = "INSERT INTO SinhVien (name, class) VALUES (%s, %s)"
val = ("Nguyen Van A", "CNTT")
mycursor.execute(sql, val)

mycursor.execute("SELECT name FROM SinhVien")

myresult = mycursor.fetchall()

for x in myresult:
  text = str(x)
  name_text = text.replace("(", "").replace(",)", "").replace("'", "")
  if name_text == val[0]:
    trung_ten = 1
if trung_ten == 1:
  print("Tên này đã có trang database: ")
  print("Bấm số 1 để tiếp tục, bấm số 2 để thoát ")
  s= input()
  if s == "1":
    print("Hello")
    mydb.commit()


print(val[0])
#mydb.commit()

sql = "DELETE FROM SinhVien WHERE ID = 63"
mycursor.execute(sql)
mydb.commit()

mycursor.execute("SELECT * FROM SinhVien")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)


mycursor.close()
mydb.close()

 

Bấm Run để chạy chương trình, bây giờ record ID=63 đã thật sự bị xóa khỏi bảng SinhVien

 


 

Giả sử chúng ta muốn "xóa hàng loạt" thì sao? Ví dụ (tùy thuộc vào chương trình hiện tại của các bạn) chúng ta cần xóa 3 records có ID là 37, 38 và 39


Chúng ta sẽ sử dụng lệnh DELETE.....IN như sau


import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password của bạn" ,
  database="mydatabase"
)

mycursor = mydb.cursor()
# Kiem tra database co ton tai hay khong
mycursor.execute("SHOW DATABASES")
databases = mycursor.fetchall()

database_exists = False
for database in databases:
  if 'mydatabase' in database:
    database_exists = True
    break

if database_exists:
  print("Database Ton Tai")
else:
  print("Database Khong Ton Tai")
  mycursor.execute("CREATE DATABASE mydatabase")

# Kiem tra table co ton tai hay khong
mycursor.execute("SHOW TABLES")
tables = mycursor.fetchall()

table_exists = False
for (table,) in tables:
  if ('sinhvien',) in tables:
    print("Table Ton Tai!!")
    table_exists = True
    break

if table_exists:
  print("Table Ton Tai")
else:
  print("Table Khong Ton Tai")
  mycursor.execute("CREATE TABLE SinhVien (id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255), class VARCHAR(100))")


sql = "INSERT INTO SinhVien (name, class) VALUES (%s, %s)"
val = ("Nguyen Van A", "CNTT")
mycursor.execute(sql, val)

mycursor.execute("SELECT name FROM SinhVien")

myresult = mycursor.fetchall()

for x in myresult:
  text = str(x)
  name_text = text.replace("(", "").replace(",)", "").replace("'", "")
  if name_text == val[0]:
    trung_ten = 1
if trung_ten == 1:
  print("Tên này đã có trang database: ")
  print("Bấm số 1 để tiếp tục, bấm số 2 để thoát ")
  s= input()
  if s == "1":
    print("Hello")
    mydb.commit()


print(val[0])
#mydb.commit()

sql = "DELETE FROM SinhVien WHERE ID = 63"
mycursor.execute(sql)
mydb.commit()

sql = "DELETE FROM SinhVien WHERE ID IN (37,38,39)"
mycursor.execute(sql)
mydb.commit()


mycursor.execute("SELECT * FROM SinhVien")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)


mycursor.close()
mydb.close()


Bấm Run chạy chương trình, 3 records đã được xóa khỏi bảng SinhVien


Phần tiếp theo


Phần trước

Không có nhận xét nào:

Đăng nhận xét