1. 第一步连接MySQL数据库,并且安装pymysql,可能出现的问题: >> python如何连接MySql数据库 <<
# 文件名称:01-连接数据库.PY
# 开发工具:PyCharm   
import pymysql
# 打开数据库连接
db1 = pymysql.connect(host='localhost', user='root', password='MYSQL1', database='JSSF')
# 通过cursor()方法获取操作游标
cursor = db1.cursor()
# 使用execute()方法执行sql语句
test = cursor.execute("select version()")  # 显示当前版本号
print(test)
# 使用fetchone()获取一条数据
data = cursor.fetchone()
print("当前数据库的版本号:",data)	# 当前数据库的版本号: ('5.7.17-log',)

db1.close()
  1. 创建表操作
    插入数据操作
# 文件名称:02-创建表.PY
# 开发工具:PyCharm   
import pymysql
'''在数据库中,创建table表
1、连接数据库
2、删除该表,如果该表存在
3、新建表
'''
# 创建数据库连接
db1 = pymysql.connect(host='localhost',user='root',password='MYSQL1',database='jssf')
cursor = db1.cursor()
# cursor.execute('drop table if EXISTS employee')
# 如果不存在执行以下sql语句
sql = """
    create table employee(
    first_name char(20) not null,
    last_name char(20),
    age int,
    sex char(1),
    income FLOAT
    )
"""
# 执行sql语句
# cursor.execute(sql)
add = "insert into employee(first_name, last_name, age, sex, income) values('张','小三','20','m',8200)"

try:
    # 执行语句
    cursor.execute(add)
    # 提交事务,不提交事务会回滚
    db1.commit()
    print("添加成功")
except:
    # 事务回滚
    db1.rollback()
    print("添加失败")
  1. 查询语句
# 文件名称:03-数据库查询操作.PY
# 开发工具:PyCharm   
import pymysql
db = pymysql.connect(host='localhost', user='root', password='MYSQL1', database='jssf')
cursor = db.cursor()
# 查询语句
sql ="select * from employee"
try:
    cursor.execute(sql)
    # 获取所有查询结果的列表
    results = cursor.fetchall()
    for i in results:
        fname = i[0]
        lname = i[1]
        age = i[2]
        sex = i[3]
        income = i[4]
        print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income))
except:
    print("error")

sql2 = "select * from employee where income >= %d" % 3000
try:
    cursor.execute(sql2)
    # 获取所有查询结果的列表
    results = cursor.fetchall()
    for i in results:
        fname = i[0]
        lname = i[1]
        age = i[2]
        sex = i[3]
        income = i[4]
        print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income))
except:
    print("error")
  1. 更新语句
# 文件名称:04-修改操作.PY
# 开发工具:PyCharm   
import pymysql
db = pymysql.connect(host='localhost', user='root', password='MYSQL1', database='jssf')
cursor = db.cursor()
sql = "update employee set age = age + 1 where sex = '%c'" % ('m')
try:
    cursor.execute(sql)
    db.commit()
    print("修改成功")
except:
    db.rollback()
    print("修改失败")
db.close()

登录注册案例—Tkiner+数据库操作

  1. 建表插入初始数据
# 文件名称:login_table.PY
# 开发工具:PyCharm   
import pymysql
# 创建数据库连接
db1 = pymysql.connect(host='localhost',user='root',password='MYSQL1',database='jssf')
cursor = db1.cursor()
# cursor.execute('drop table if EXISTS employee')
# 如果不存在执行以下sql语句
sql = """
    create table user(
    id int PRIMARY KEY AUTO_INCREMENT,
    name char(20) not null,
    password char(10) NOT NULL
    )
"""
# 执行sql语句
# cursor.execute(sql)
add = "insert into user(name, password) values('小护', '120021')"

try:
    # 执行语句
    cursor.execute(add)
    # 提交事务,不提交事务会回滚
    db1.commit()
    print("添加成功")
except:
    # 事务回滚
    db1.rollback()
    print("添加失败")
  1. 登录界面
# 登录界面案例
import tkinter as tk
from tkinter import messagebox
from Day10 import register
import pymysql
class Login(tk.Frame):
    def __init__(self):
        global root
        root = tk.Tk()
        # 设置窗口大小
        root.geometry("300x200")
        # 设置窗体的大小固定不可被修改,1为可以,0为不可以
        # 第一个参数宽度是否可以被修改,第二个参数高度是否可以被修改
        root.resizable(0, 0)
        super().__init__()
        # 用户名输入框
        self.username = tk.StringVar()
        self.password = tk.StringVar()
        self.pack()
        # 布局的方法
        self.main_login()
        # 显示
        root.mainloop()

    # 主体布局的方法
    def main_login(self):
        global root
        '''place是设置位置'''
        user_title_lable = tk.Label(root, text="登录窗口", font=('宋体', 13)).place(x=120, y=10)
        username_lable = tk.Label(root, text="用户名:", font=('宋体', 13)).place(x=20, y=50)
        '''textvariable是指这个控件的值绑定的变量'''
        username = tk.Entry(root, width=16, textvariable=self.username).place(x=90, y=50)
        password_lable = tk.Label(root, text="密码:", font=('宋体', 13)).place(x=20, y=90)
        password = tk.Entry(root, show="*", width=16, textvariable=self.password).place(x=90, y=90)
        '''command是点击按钮触发后的函数'''
        login_lable = tk.Button(root, text="登录", command=self.check_login, font=('宋体', 13)).place(x=80, y=130)
        cancel_table = tk.Button(root, text="注册", command=self.to_register, font=('宋体', 13)).place(x=160, y=130)

    # 验证函数
    def check_login(self):
        # 监控输入框
        print("user", self.username.get())
        print("password", self.password.get())

        # 判断字典中对应的value和输入的密码是否一致
        if self.query() == True:
            messagebox.showinfo("通知", "登陆成功!")
        else:
            messagebox.showinfo("通知", "用户名或密码错误!")

    # 数据库查询
    def query(self):
        db = pymysql.connect(host='localhost', user='root', password='MYSQL1', database='jssf')
        cursor = db.cursor()
        sql = "select * from user where name='%s' and password='%s'" % (self.username.get(), self.password.get())
        try:
            cursor.execute(sql)
            # 获取所有查询结果的列表
            results = cursor.fetchall()
            for i in results:
                username = i[1]
                pwd = i[2]
                print("username = %s,pwd = %s" % (username, pwd))
                print("找到了")
                return True
        except:
            print("error")
            return False
        db.close()

    # 跳转到注册页面
    def to_register(self):
        root.destroy()
        register.Regist()


if __name__ == '__main__':
    Login()
  1. 注册界面
# 文件名称:register.PY
# 开发工具:PyCharm
import tkinter as tk
from tkinter import messagebox
import pymysql
from Day10 import login
class Regist(tk.Frame):
    def __init__(self):
        global root
        root = tk.Tk()
        # 设置窗口大小
        root.geometry("300x200")
        # 设置窗体的大小固定不可被修改,1为可以,0为不可以
        # 第一个参数宽度是否可以被修改,第二个参数高度是否可以被修改
        root.resizable(0, 0)
        super().__init__()
        # 用户名输入框
        self.username = tk.StringVar()
        self.password = tk.StringVar()
        self.pwd = tk.StringVar()
        self.pack()
        # 布局的方法
        self.main_login()
        # 显示
        root.mainloop()
        # 主体布局的方法

    def main_login(self):
        global root
        '''place是设置位置'''
        user_title_lable = tk.Label(root, text="注册窗口", font=('宋体', 13)).place(x=120, y=10)
        username_lable = tk.Label(root, text="用户名:", font=('宋体', 13)).place(x=20, y=45)
        '''textvariable是指这个控件的值绑定的变量'''
        username = tk.Entry(root, width=16, textvariable=self.username).place(x=110, y=45)
        password_lable = tk.Label(root, text="密码:", font=('宋体', 13)).place(x=20, y=85)
        password = tk.Entry(root, show="*", width=16, textvariable=self.password).place(x=110, y=85)
        pwd_lable = tk.Label(root, text="再次输入:", font=('宋体', 13)).place(x=20, y=125)
        pwd = tk.Entry(root, show="*", width=16, textvariable=self.pwd).place(x=110, y=125)
        '''command是点击按钮触发后的函数'''
        login_lable = tk.Button(root, text="注册", command=self.check, font=('宋体', 13)).place(x=80, y=160)
        cancel_table = tk.Button(root, text="登录", command=self.to_login, font=('宋体', 13)).place(x=160, y=160)

    # 验证函数
    def check(self):
        # 检查密码是否一致
        if self.password.get() != self.pwd.get():
            messagebox.showinfo("通知", "两次输入密码不一致")
        # 检查用户名是否被注册
        elif self.query() == False:
            messagebox.showinfo("通知", "用户名已经被注册")
        else:
            messagebox.showinfo("通知", "注册成功")
            # 全部检查完后可以添加用户
            self.add()

    # 查询数据库验证用户是否存在
    def query(self):
        db = pymysql.connect(host='localhost', user='root', password='MYSQL1', database='jssf')
        cursor = db.cursor()
        sql = "select * from user where user.name='%s'" % (self.username.get())
        print(sql)
        try:
            cursor.execute(sql)
            # 获取所有查询结果的单个元组
            result = cursor.fetchone()
            print(result)
            if result:
                print("该用户名已经被注册")
                return False
            else:
                print("可以注册")
                return True
        except:
            print("error")

    # 注册插入函数
    def add(self):
        db = pymysql.connect(host='localhost', user='root', password='MYSQL1', database='jssf')
        cursor = db.cursor()
        sql = "insert into user(name, password) values ('%s', '%s')" % (self.username.get(), self.password.get())
        print(sql)
        try:
            cursor.execute(sql)
            db.commit()
            print("注册成功")
        except:
            db.rollback()
            print("修改失败")
        db.close()
    # 去登录
    def to_login(self):
        root.destroy()
        login.Login()