[Python]即学即用!编写程序修改MySQL数据
有时我们需要对数据库的数据进行操作,但是考虑到风险又不想直接或者借助可视化软件操作数据库。特别是那些需要重复进行的操作,最好是能写个程序复用而不是每次重复操作。
通过这篇文章你将会学会写一个Python程序,通过MySQLdb对MySQL数据库来进行删除和修改操作。
#coding=utf-8
import tkinter as tk #Python窗口界面库
import MySQLdb #用Python操作MySQL的接口库
# 删除数据,修改数据函数
def del_check_record():
try:
# 1.加载数据库变量
serverip = "localhost" #数据库ip,这里默认本地
account = "root" #MySQL账户名
password = "root" #MySQL密码
database = "database_name" #需要连接数据库名称
# 2.连接数据库
db = MySQLdb.connect(serverip, account, password, database, charset="utf8") #一定注意不是utf-8而是utf8!
cursor = db.cursor() #控制光标
serialnum = entry.get() #获取输入框的值为serialnum
sql = "use database_name;" #sql语句,使用数据库database_name
cursor.execute(sql) #执行sql语句
# 3.删除数据
sql1 = "delete from biz_productcheck_record where Serial =" #表名:biz_productcheck_record,列名:Serial
sql2 = sql1+"'"+serialnum+"'"+";" #sql2还原为sql语句为:delete from biz_productcheck_record where Serial='此单引号内为输入框的值serialnum';
cursor.execute(sql2) #执行sql2
db.commit() #提交数据。创建,增,删,改 都需要用数据库连接的对象去提交事务,而查询并不用去提交。
# 4.修改数据
sql3 = "update biz_pro_record set CheckFlag = 0 where Serial ="
sql4 = sql3+"'"+serialnum+"'"+";" #sql4还原为sql语句为:update biz_pro_record set CheckFlag = 0 where Serial = '此单引号内为输入框的值serialnum';
cursor.execute(sql4) #执行sql4
db.commit() #提交数据。创建,增,删,改 都需要用数据库连接的对象去提交事务,而查询并不用去提交。
# 5.查询SQL语句
sql5 = "select * from biz_productcheck_record where Serial ="
sql6 = sql5 + "'" + serialnum + "'" + ";"
cursor.execute(sql6)
data1 = cursor.fetchall() #拿到查询返回结果
print(data1)
# 查询SQL语句
sql7 = "select CheckFlag from biz_pro_record where CheckFlag = 0 and Serial ="
sql8 = sql7 + "'" + serialnum + "'" + ";"
cursor.execute(sql8)
data2 = cursor.fetchone()
#fetchone()函数的返回值是单个的元组,也就是一行记录,如果没有结果,那就会返回null,fetchall()函数的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是()
if data2[0]=='0':
message = tk.Message(window, text= "删除记录成功!", font=('微软雅黑', 20)) #Message部件:显示文本,能够自动地调整文本到给定的宽度或比率。
message.grid(row=1, column=1) #在row=1, column=1位置显示,起始是row=0,column=0
else:
message = tk.Message(window, text= "删除记录失败!", font=('微软雅黑', 20))
message.grid(row=1, column=1)
# 6.断开数据库
db.close()
except Exception:
message = tk.Message(window, text="输入", font=('微软雅黑', 20))
message.grid(row=1, column=1)
print("不能删除记录!")
# 窗口大小及布局
width = 600 #窗口宽度600像素
height = 200 #窗口高度200像素
window = tk.Tk() #实例化object,建立窗口window
window.title('检查记录删除程序') #给窗口的可视化起名字
window.minsize(width, height) #设定窗口最小大小
label = tk.Label(window, text='追溯番号:', font=('微软雅黑', 20)) #Label部件:显示一个文本或图象。
label.grid(row=0, column=0) #在row=0,column=0处显示
entry = tk.Entry(window, font=('微软雅黑', 20)) #Entry部件:文本输入域。
entry.grid(row=0, column=1) #在row=0, column=1处显示
button = tk.Button(window, text='删除检查记录', font=('微软雅黑', 20), command=del_check_record) #Button部件:一个简单的按钮,用来执行一个命令或别的操作。
button.grid(row=1, column=0) #在row=1, column=0处显示
window.mainloop() #主窗口循环显示,window.mainloop就会让window不断的刷新,如果没有mainloop,就是一个静态的window,传入进去的值就不会有循环
#mainloop就相当于一个很大的while循环,有个while,每点击一次就会更新一次,所以我们必须要有循环