pymysql基本操作

本文主要是基于pymysql,连接mysql进行数据库的基本操作

1.连接数据库

这里使用的数据库管理工具是navicat,运行环境为python3.8

如果没有安装pymysql模块,可以使用pip install pymysql进行相应的安装

#数据库操作
import pymysql
#连接数据库
conn=pymysql.connect(host='localhost',port=3306,user='root',password='******',database='mydb2',charset='utf8')
#创建一个游标对象
cursor=conn.cursor()
sql='select * from stu'
#使用execute()方法执行SQL语句
cursor.execute(sql)
#使用fethall()获取全部数据
data=cursor.fetchall()
#以元组的形式输出结果
print(data)
#最后关闭游标和数据库连接
cursor.close()
conn.close()

说明:上面代码中的密码是自己设置的,然后连接数据库

连接数据库使用的是pymysql.connect(),其基本参数如下:

参数 基本用法
host 数据库将连接地址,我这里是localhost
port 端口号,默认为3306
user 数据库用户名
password 数据库密码,自己设置的
database 要在哪个数据库进行操作
charset

编码方式,如果有中文,就要设置编码方式UTF8

结果显示:在pycharm中查询到结果为

 2.数据库中表的一些基本操作

2.1 在数据库中增加一条数据

import pymysql
#连接数据库
conn=pymysql.connect(host='localhost',port=3306,user='root',password='******',database='mydb2',charset='utf8')
#创建一个游标对象
cursor=conn.cursor()
sql='insert into stu(uid,name,score) values(%s,%s,%s)'
#执行sql语句
cursor.execute(sql,(5,'张红',100))
#将结果提交给数据库
conn.commit()
cursor.close()
conn.close()'''

 结果显示:在数据库中看到stu表中多了一条数据

pymysql基本操作_第1张图片

说明:这里的cursor.execute()是执行语句,当进行增删改必须将数据传给数据库,也就是必须有cursor.commit()语句。

 2.2 在数据库中增加多条语句

增加多条语句使用的是cursor.executemany()函数

import pymysql
conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='******',database='mydb2',charset='utf8')
cursor=conn.cursor()'''
'''sql='insert into stu(uid,name,score) values(%s,%s,%s)'
cursor.executemany(sql,[(6,'小王',60),(7,'张涛',65)])
conn.commit()
cursor.close()
conn.close()
 结果显示:在数据库中查看结果

pymysql基本操作_第2张图片

 2.3 删除表中数据

import pymysql
conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',database='mydb2',charset='utf8')
cursor=conn.cursor()
sql='delete from stu where name=%s'
res=cursor.execute(sql,('张涛'))
print('res=',res)
conn.commit()
cursor.close()
conn.close()

2.4 更新表中的数据

import pymysql
conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='******',database='mydb2',charset='utf8')
cursor=conn.cursor()
sql='update stu set score=60 where name=%s'
cursor.execute(sql,('张亮'))
conn.commit()
cursor.close()
conn.close()

结果显示:

pymysql基本操作_第3张图片

3.对表中数据进行查询

查询使用fetcall()获取所有数据

import pymysql
conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='******',database='mydb2',charset='utf8')
cursor=conn.cursor()
sql='select * from stu'
cursor.execute(sql)
data=cursor.fetchall()
print(data)
for i in data:
    uid=i[0]
    name=i[1]
    score=i[2]
    print("uid=%s,name=%s,score=%s"%(uid,name,score))
conn.commit()
cursor.close()
conn.close()

 说明:

函数 说明
.fetchall() 查询到的所有结果集合
.fetchone() 获取查询结果集合中的下一条记录
fetchmany(size) 获取指定数量的记录

结果显示:

pymysql基本操作_第4张图片

4.mysql总结

对于修改表结构,插入,查询,删除数据等操作,与上面的操作大体一样,主要是对 sql 语句的编写,此处不做赘述。
整体过程为:连接数据库 -> 创建游标对象 -> 编写sql语句 -> 执行sql语句 -> 获取结果 -> 关闭游标->关闭数据库连接

5.mysql与tkinter结合小案例

刚接触tkinter,还不是很熟悉,就写一个小案例吧。tkinter 模块,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口。

这里我将设计一个小的界面,功能主要是输入11位密码,点击查询按钮,可以连接到数据库将你想要的结果输出到屏幕上。

import tkinter as tk
import pymysql

window = tk.Tk()
window.title('号码查询')
#窗口尺寸
window.geometry('200x200')
# 定义一个输入框entry
g = tk.Entry(window, show=None)  # 如果是输入密码,可以写show='*'
g.pack()
va = "号码正常"
v = "号码不正常"
def qk():
    if len(g.get()) == 0:
        t.delete("1.0", "end")  # 清空文本框
        t.insert("end", "号码不能为空")  # 这里还可以定义字符串插入的具体位置,比如t.insert('1.1',"号码不能为空"),表示插入到第一行第一列
    elif len(g.get()) != 11:
        t.delete("1.0", "end")  # 清空文本框
        t.insert("end", v)
    elif len(g.get()) == 11:
        t.delete("1.0", "end")  # 清空文本框
        conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='******', db='mydb4', charset='utf8')
        cursor = conn.cursor()
        sql = 'select * from employee where salary>3000; '
        #这里是在员工表中查找员工薪资大于三千的信息
        cursor.execute(sql)
        data1 = cursor.fetchall()
        print(data1)
        #输出结果
        for i in data1:
            dname=i[0]
            eid=i[1]
            ename=i[2]
            hiredate=i[3]
            salary=i[4]
            print("dname:",dname,'eid:',eid,'ename:',ename,'hiredate:',hiredate,'salary:',salary)
b1 = tk.Button(window, text="查询", width=15, height=2, command=qk,bg='red')
b1.pack()
# 定义一个文本框 Text
t = tk.Text(window, width=30, height=20)
t.pack()  ##显示出来

window.mainloop()

代码中的数据库部分就不在详细介绍了,可以参考上面的介绍。

下面就介绍下tkinter模块中的button和entry的用法,主要是一些常用的

5.1 button属性

选项 含义
text 指定按钮上的文字
font 指定按钮上文字的字体大小
width 指定按钮的宽度
height 指定按钮的高度
abchor 用来指定文本或图像在label显示区的显示位置,默认为center
image 在按钮上显示图片
compound 使按钮中 文字和图片都可以显示
bitmap 显示位图
bg 设置按钮背景图
fg 设置前景颜色
relief 指定按钮边框样式

5.2 entry属性

选项 含义
background 设置输入框的背景颜色
borderwidth 设置 Entry 的边框宽度
show 设置输入框如何显示文本的内容,如果设置成**则为密码输入框
state 可以设置的状态:"normal","disabled" 或 "readonly",默认为normal

界面展示:

pymysql基本操作_第5张图片

根据代码,当输入的为空值是,文本提示,号码不能为空;当输入的密码不是11位时,提示密码输入错误;正确输入密码才会展示你想要的结果,输出员工表中薪资大于3000的员工所有信息。

结果如下:

pymysql基本操作_第6张图片

 6.总结

 上面的知识都较为基础,感兴趣的小伙伴也可以去查找其他的资料进行深入的学习哈。

你可能感兴趣的:(python学习,数据库,sql,mysql)