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表中多了一条数据

说明:这里的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()
 结果显示:在数据库中查看结果

 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()

结果显示:

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)获取指定数量的记录

结果显示:

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

界面展示:

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

结果如下:

 6.总结

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值