[Python]即学即用!编写程序修改MySQL数据


python编程

[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,每点击一次就会更新一次,所以我们必须要有循环

删除记录成功