@[toc]
前言
上次写了用IO完成数据存储的图书管理系统,
这次更新一个用MySQL完成数据存储的图书管理系统。
但在这之前,需要先了解Python连接数据库的工具库 —— PyMySQL
PyMySQL 安装
方法1:打开cmd,输入 pip install pymysql。即可安装完毕。
方法2:在Pycharm里面下载该库。
具体步骤:
1.在左上角File
中找到settings
2.在Python Interpreter
中点+
3.在搜索栏中输入pymysql
,再点Install Package
,即可安装成功
PyMySQL 使用
0.先导包
import pymysql
1.打开数据库连接
db = pymysql.connect(host='localhost', user="root", passwd='自己的数据库密码', database='数据库名')
2.使用cursor()方法获取操作游标
cursor = db.cursor()
3.写sql语句
sql = '想怎样操作数据库的sql语句'
4.执行sql语句
try:
cursor.execute(sql % (这里面写参数))
db.commit()
except:
db.rollback() # 发生错误时回滚
5.关闭数据库连接
db.close()
全代码演示:
import pymysql
db=pymysql.connect(host='localhost',user='root',passwd='密码',database='数据库名')
cursor = db.cursor()
sql = 'insert into allbooks(书名,作者,种类,数量,剩余) values("%s", "%s", "%s", "%d", "%d")'
try:
cursor.execute(sql % (name_book, author_book, type_book, num_book, surplus_book))
db.commit()
except:
db.rollback()
db.close()
补充:connect 的参数和参数的作用
- host : 服务器的主机地址
- port :mysql数据库的端口号(不常用)
- user : 用户名
- password : 密码
- database :操作的数据库名
- charset : 操作数据库使用的编码个数(不常用)
数据库方面的准备
在 final_assignment 数据库下,创建 allbooks表
图书管理系统代码
在了解了 PyMySQL
的安装和使用后,接下来就能看懂代码了
import pymysql
# 新增图书信息
def Add():
name_book = input('请输入书名:')
author_book = input('请输入作者:')
type_book = input('请输入种类:')
num_book = int(input('请输入数量:'))
surplus_book = int(input('请输入剩余:'))
db = pymysql.connect(host='localhost', user="root", passwd='MQ20201008', database='final_assignment') # 打开数据库连接
cursor = db.cursor() # 使用cursor()方法获取操作游标
sql = 'insert into allbooks(书名,作者,种类,数量,剩余) values("%s", "%s", "%s", "%d", "%d")' # SQL 插入语句
try:
cursor.execute(sql % (name_book, author_book, type_book, num_book, surplus_book)) # 执行sql语句
db.commit()
except:
db.rollback() # 发生错误时回滚
db.close() # 关闭数据库连接
# 删除图书信息
def Delete():
del_num = int(input('请输入你要删除图书的编号:'))
db = pymysql.connect(host='localhost', user="root", passwd='MQ20201008', database='final_assignment')
cursor = db.cursor()
sql = 'delete from allbooks where 编号 = "%d"'
try:
cursor.execute(sql % del_num)
db.commit()
except:
db.rollback()
db.close()
# 修改图书信息
def Alter():
alt_num = int(input('请输入你要修改图书的编号:'))
a = input('请输入书名:')
b = input('请输入作者:')
c = input('请输入种类:')
d = int(input('请输入数量:'))
e = int(input('请输入剩余:'))
db = pymysql.connect(host='localhost', user="root", passwd='MQ20201008', database='final_assignment')
cursor = db.cursor()
sql = 'update allbooks set 书名 = "%s",作者 = "%s",种类 = "%s",数量 = "%d",剩余 = "%d" where 编号 = "%d"'
try:
cursor.execute(sql % (a, b, c, d, e, alt_num))
db.commit()
except:
db.rollback()
db.close()
# 查询图书信息
def Search():
sea_num = int(input('请输入你要查找图书的编号:'))
db = pymysql.connect(host='localhost', user="root", passwd='MQ20201008', database='final_assignment')
cursor = db.cursor()
sql = 'select * from allbooks where 编号 = "%d"'
try:
cursor.execute(sql % sea_num)
f = cursor.fetchall()
print(f)
except:
db.rollback()
db.close()
# 展示所有图书信息
def Show():
db = pymysql.connect(host='localhost', user="root", passwd='MQ20201008', database='final_assignment')
cursor = db.cursor()
sql = 'select * from allbooks'
try:
cursor.execute(sql)
f = cursor.fetchall()
for i in f:
print(i)
except:
db.rollback()
db.close()
# 选择菜单
def Menu():
print('-----------------------------功能菜单-----------------------------')
print('\t\t\t\t1.新增图书信息')
print('\t\t\t\t2.删除图书信息')
print('\t\t\t\t3.修改图书信息')
print('\t\t\t\t4.查询图书信息')
print('\t\t\t\t5.展示所有图书信息')
print('\t\t\t\t0.退出')
print('----------------------------------------------------------------')
# 主程序
def main():
print('=========================资料室图书管理系统=========================')
while True:
Menu()
select = eval(input('请选择功能:'))
if select == 1:
Add()
print('新增信息完成!')
print('\n')
elif select == 2:
Delete()
print('删除信息完成!')
print('\n')
elif select == 3:
Alter()
print('修改信息完成!')
print('\n')
elif select == 4:
Search()
print('\n')
elif select == 5:
Show()
print('\n')
elif select == 0:
print('谢谢使用!')
break
else:
print("输入错误!请重新输入!")
main()
运行效果:
展示所有图书信息
新增图书信息
修改图书信息
删除图书信息
查询图书信息
退出
这就是代码的全部功能了
小提示:
在展示数据时,数据堆在一起,没有注重美观。是因为美观问题可以留到和前端数据交互时再做,这里只要能把正确的数据取出即可。