本文主要是基于pymysql,连接mysql进行数据库的基本操作
这里使用的数据库管理工具是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中查询到结果为
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()语句。
增加多条语句使用的是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()
结果显示:在数据库中查看结果
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()
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()
结果显示:
查询使用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) | 获取指定数量的记录 |
结果显示:
对于修改表结构,插入,查询,删除数据等操作,与上面的操作大体一样,主要是对 sql 语句的编写,此处不做赘述。
整体过程为:连接数据库 -> 创建游标对象 -> 编写sql语句 -> 执行sql语句 -> 获取结果 -> 关闭游标->关闭数据库连接
刚接触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的用法,主要是一些常用的
选项 | 含义 |
text | 指定按钮上的文字 |
font | 指定按钮上文字的字体大小 |
width | 指定按钮的宽度 |
height | 指定按钮的高度 |
abchor | 用来指定文本或图像在label显示区的显示位置,默认为center |
image | 在按钮上显示图片 |
compound | 使按钮中 文字和图片都可以显示 |
bitmap | 显示位图 |
bg | 设置按钮背景图 |
fg | 设置前景颜色 |
relief | 指定按钮边框样式 |
选项 | 含义 |
background | 设置输入框的背景颜色 |
borderwidth | 设置 Entry 的边框宽度 |
show | 设置输入框如何显示文本的内容,如果设置成**则为密码输入框 |
state | 可以设置的状态:"normal","disabled" 或 "readonly",默认为normal |
界面展示:
根据代码,当输入的为空值是,文本提示,号码不能为空;当输入的密码不是11位时,提示密码输入错误;正确输入密码才会展示你想要的结果,输出员工表中薪资大于3000的员工所有信息。
结果如下:
上面的知识都较为基础,感兴趣的小伙伴也可以去查找其他的资料进行深入的学习哈。