相信大家在学习python编程时绝对离不开数据库的连接,那么我们就用python来连接数据库实现一个简单的图书借阅系统。其实也很简单,就是在我们的程序中加入sql语句即可

数据库的表结构

我们在这里需要三张表,一张用户表,一张图书表和一张借阅表。注意我们的数据库命名为bbs(book borrow system)
1.用户表

2.图书表

bookname:书名
author:作者
booknum:图书编号
bookpress:出版社
bookamoun:图书数量

3.借阅表

id:借阅号
borrowname:借阅人
borrowbook:借阅图书
bookid:图书编号同图书表booknum
borrowamoun:借阅数量
borrowdate:借阅日期
borrowback:归还日期

Python程序

1.主程序:图书借阅系统.py

# _*_ coding:utf-8 _*_
import pymysql
import db_event
import book_managewhile True:print("欢迎使用图书借阅系统\[1]登陆 [2]注册 [3]退出")choice = int(input("请输入您要进行的操作(数字):"))if choice == 1:name = input("请输入用户名:")login_status=db_event.user_login(name)if login_status==1:book_manage.manage(name)else:print("登陆失败")continueelif choice==2:create_user = db_event.user_create()print("用户创建成功,您创建的用户信息如下:/n\姓名:%s 年龄:%d 性别:%s 密码:%s" % (create_user[0], create_user[1], create_user[2], create_user[3]))elif choice==3:exit()else:print("无效操作!")continue

2.图书的管理信息:book_manage.py

import db_eventdef manage(name):while True:print("欢迎进入图书系统\n\[1]查询图书 [2] 借阅图书 [3]捐赠图书 [4]归还图书 [5]退出")num = int(input('输入您的选择:'))if num == 1:db_event.book_select()elif num == 2 :chos=int(input("请选择[1]借阅 [2]续借 [3]查询借阅信息 [4]退出"))if chos==1:db_event.book_borrow(name)elif chos==2:db_event.borrow_again()elif chos==3:db_event.borrow_info_select(name)elif chos==4:continueelse:print("无效操作")elif num == 3 :db_event.book_juanzeng()elif num == 4 :db_event.book_back()elif num == 5 :breakelse:print("无效输入!")

3.数据库的操作:db_event.py

# _*_ coding:utf-8 _*_
import pymysql
import random
import stringdef user_login(name):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "SELECT name,mima FROM user WHERE name='%s'" %(name)cursor.execute(sql)results = cursor.fetchall()if results:res=results[0]for i in range(3):mima = input("请输入密码:")if mima == res[1]:print("登陆成功!")login_status = 1breakelse:login_status=0print("密码输入不正确!请重新输入")# print(login_status)if login_status == 1 :return login_statuselse:print("您已输入错误密码三次,无法登陆图书借阅系统,欢迎下次使用!")login_status = 0return login_statuselse:login_status = 0print("您输入的用户不存在!")return login_statusdb.close()
#判断是否登陆成功,1为成功,0为不成功
# login_status=user_login()
# if login_status==1:
#     print("ok")
# else:
#     print("no")
#关闭数据库连接
# curcor.close()
# db.close()def user_create():db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()name=input("请输入姓名:")age=int(input("请输入年龄:"))sex=input("请输入性别[M]男 [W]女 :")mima=input("为您的用户设置一个8位数密码:")sql = "INSERT INTO user VALUES('%s',%s,'%s','%s')" %(name,age,sex,mima)cursor.execute(sql)db.commit()sql1="SELECT * FROM user WHERE name='%s'" %(name)cursor.execute(sql1)results=cursor.fetchone()return resultsdb.close()
#create_user=user_create()
#print("用户创建成功,您创建的用户信息如下:/n\#     姓名:%s 年龄:%d 性别:%s 密码:%s" %(create_user[0],create_user[1],create_user[2],create_user[3]))def book_info_select(x,y):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "SELECT * FROM book WHERE %s='%s'" %(x,y)cursor.execute(sql)results=cursor.fetchone()if results:print("书名:%s 作者:%s 书籍编号:%s 出版社:%s 剩余数量:%d " %(results[0],results[1],results[2],results[3],results[4]))else:print("没有您所要查询的图书")db.close()def book_select():a = int(input("输入您要查询的图书关键信息\[1]书名 [2]作者 [3]书籍号 [4]出版社"))b=""if a == 1 :b="bookname"name=input("请输入要查询的书名:")book_info_select(b,name)elif a == 2 :b="author"auth=input("请输入作者名:")book_info_select(b,auth)elif a == 3 :b="booknum"num=input("请输入书籍编号")book_info_select(b,num)elif   a == 4 :b="bookpress"press=input("请输入出版社:")book_info_select(b,press)else:print("输入有误")book_select()def gen_code(len=8):code_str = string.ascii_letters + string.digitsreturn ''.join(random.sample(code_str, len))def book_add(name,auth,press,amount):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()num=gen_code()sql = "INSERT INTO book VALUES('%s','%s','%s','%s',%s)" %(name,auth,num,press,amount)sql1 = "SELECT booknum FROM book"cursor.execute(sql1)res = cursor.fetchall()list=[]for i in res :list.append(i)try:while True:if num in list:gen_code()else:cursor.execute(sql)db.commit()print("图书捐赠成功,谢谢您!")breakexcept:print("输入图书数目错误!")db.rollback()db.close()def book_update_add(name,auth,press,amount):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql="UPDATE book SET bookamount=bookamount+%s WHERE bookname='%s' AND author='%s' AND bookpress='%s'" %(amount,name,auth,press)try:cursor.execute(sql)db.commit()print("图书捐赠成功,谢谢您!")except:print("输入图书数目错误!")db.rollback()db.close()def book_juanzeng():db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()name=input("请输入您要捐赠的图书书名:")auth=input("请输入您要捐赠的图书作者:")press=input("请输入您要捐赠的图书的出版社:")amount = int(input("输入您要捐赠的数目:"))sql = "SELECT * FROM book WHERE bookname='%s'AND author='%s' AND bookpress='%s'" %(name,auth,press)cursor.execute(sql)results=cursor.fetchone()if results:book_update_add(name,auth,press,amount)else:book_add(name,auth,press,amount)db.close()def book_if_borrow(booknum,amount):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "SELECT bookamount FROM book WHERE booknum='%s'" %(booknum)cursor.execute(sql)res = cursor.fetchall()if res:if res[0][0] >= amount :#编号为booknum的书的数量还有,可以借return Trueelse:print("您所需要的编号为%s的书籍当前图书馆只有%d本,不满足您的需求" %(booknum,res[0][0]))return Falseelse:print("查无此书,请确认您的书籍编号!")return Falsedb.close()def book_borrow_after(amount,booknum):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "UPDATE book SET bookamount=bookamount-%s WHERE booknum='%s'" %(amount,booknum)cursor.execute(sql)db.commit()db.close()def borrow_add(name,booknum,amount):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()days = int(input("请输入您选择借阅的天数(不可超过365天):"))sql = "INSERT INTO borrow VALUES(NULL,'%s',(SELECT bookname FROM book WHERE booknum='%s'),'%s',%s,CURDATE(),DATE_ADD(CURDATE(),INTERVAL %s DAY))" %(name,booknum,booknum,amount,days)cursor.execute(sql)db.commit()def select_after_borrow(booknum,name):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql2 = "SELECT * FROM borrow WHERE bookid='%s' AND borrowname='%s'" % (booknum, name)cursor.execute(sql2)return cursor.fetchall()def book_borrow(name):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()booknum=input("请输入您要借阅的图书编号:")amount=int(input("请输入您要借阅的书籍个数:"))sql1 = "SELECT * FROM book WHERE booknum='%s'" % (booknum)cursor.execute(sql1)result = cursor.fetchone()res = book_if_borrow(booknum,amount)if res:print("您要借阅的书籍书名:%s 作者:%s 书籍编号:%s 出版社: %s 当前剩余:%d本 借后剩余:%d本" %(result[0],result[1],result[2],result[3],result[4],result[4]-amount))book_borrow_after(amount,booknum)#db.commit()borrow_add(name,booknum,amount)info=select_after_borrow(booknum,name)print("以下是您的借阅图书信息,注意借阅号,这将是您还书的凭证!\n\
借阅号:%d 借阅人:%s 借阅图书:%s 图书编号:%s 借阅数量:%d 借阅日期:%s 归还日期:%s" %(info[-1][0],info[-1][1],info[-1][2],info[-1][3],info[-1][4],info[-1][5],info[-1][6]))print("借阅成功")while True:a=int(input("请输入您选择:[1]继续借阅 [2]退出"))if a == 1:book_borrow(name)breakelif a == 2 :breakelse:print("无效操作")else:print("借阅失败")while True:a=int(input("请输入您选择:[1]继续借阅 [2]退出"))if a == 1:book_borrow(name)breakelif a == 2 :breakelse:print("无效操作")db.close()def back_if_over(id):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "SELECT * FROM borrow WHERE backdate >= CURDATE() AND id = %s" %(id)cursor.execute(sql)res=cursor.fetchall()if res:return Trueelse:return Falsedb.close()def book_back_update(id):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "UPDATE book SET bookamount=bookamount+(SELECT borrowamount FROM borrow WHERE id = %s) WHERE booknum=(SELECT bookid FROM borrow WHERE id = %s)" %(id,id)cursor.execute(sql)db.commit()db.close()def borrow_back_update(id):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "DELETE FROM borrow WHERE id=%s" %(id)cursor.execute(sql)db.commit()db.close()def book_back():db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()while True:id = int(input("请输入您的借阅号:"))sql1 = "SELECT * FROM borrow WHERE id=%s" %(id)cursor.execute(sql1)info =cursor.fetchone()if info:print("以下是您的借阅图书信息,注意借阅号,这将是您还书的凭证!\n\
借阅号:%d 借阅人:%s 借阅图书:%s 图书编号:%s 借阅数量:%d 借阅日期:%s 归还日期:%s" % (info[0], info[1], info[2], info[3], info[4], info[5], info[6]))choice=int(input("请确认您的归还借书信息:[1]确认 [2]返回 [3]退出"))if choice == 1 :#判断是否逾期:if back_if_over(id):book_back_update(id)borrow_back_update(id)print("还书成功")breakelse:print("您已逾期,请联系管理员!")breakelif choice == 2:continueelif choice == 3 :breakelse:print("无效输入")else:print("请输入正确的借阅号")def borrow_info_again(id,day):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql1 = "SELECT * FROM borrow WHERE id=%s" % (id)cursor.execute(sql1)info = cursor.fetchone()print("以下是您的借阅图书信息:\n\
借阅号:%d 借阅人:%s 续借天数:%d 借阅图书:%s 图书编号:%s 借阅数量:%d 初始借阅日期:%s 归还日期:%s" %(info[0], info[1],day,info[2], info[3], info[4], info[5], info[6]))db.close()def borrow_update_again(id):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()a=int(input("请输入您的续借天数(不超过31天):"))if a > 31 :print("您的借阅天数已超过系统权限,如要借阅,请联系管理员!")else:sql="UPDATE borrow SET backdate=DATE_ADD(backdate,INTERVAL %s DAY) WHERE id=%s" %(a,id)cursor.execute(sql)db.commit()db.close()return adef borrow_again():id=int(input("输入您的借阅号:"))if back_if_over(id):day=borrow_update_again(id)borrow_info_again(id,day)print("续借成功")else:print("您已逾期,请先联系管理员再进行操作,谢谢!")def borrow_info_select(name):db = pymysql.connect("localhost", "ljz", "redhat", "bbs")cursor = db.cursor()sql = "SELECT * FROM borrow WHERE borrowname='%s'" %(name)cursor.execute(sql)res=cursor.fetchall()if res:for i in range(len(res)):print("以下是您的第%d条借阅图书信息:\n\
借阅号:%d 借阅人:%s 借阅图书:%s 图书编号:%s 借阅数量:%d 借阅日期:%s 归还日期:%s" % (i+1,res[i][0], res[i][1], res[i][2], res[i][3], res[i][4], res[i][5], res[i][6]))else:print("您没有借阅图书")db.close()

最后小编想说的是我在这里没有加入图形化或者web,如果有人有兴趣继续做下去的话可以添加自己喜欢的东西,希望对大家有帮助

Python连接Mysql数据库实现图书借阅系统相关推荐

  1. python tkinter链接数据库的图书借阅系统

    pythontkinter链接sql数据库的图书借阅系统-互联网文档类资源-CSDN下载pythontkinter链接sql数据库的图书借阅系统效果视频:https://www.bili更多下载资源. ...

  2. Python连接MySQL数据库(pymysql),DataFrame写入 MySQL(create_engine)- Python代码

    模块安装 使用以下命令安装 PyMySQL: $ pip install PyMySQL 若系统不支持 pip,还可以这样安装: $ git clone https://github.com/PyMy ...

  3. Python连接Mysql数据库入门

    Python 连接mysql数据库入门教程 直接上代码 数据库建表省略 要执行哪段代码把#去掉即可:有文字解释 难度 : ⭐⭐(全星5颗星的情况下) import pymysql # 导入模块 根据P ...

  4. python连接MySQL数据库的示例代码

    python连接MySQL数据库 示例代码: ''' 获取数据库连接 host 数据库主机名或者是IP地址 port 数据库连接端口,注意是整型数值,一般是3306 user 登录数据库的用户名 pa ...

  5. python连接mysql数据库数据

    使用python连接mysql数据库数据,有以下两种读取数据的方式推荐. 一种是通过游标,及fetch系列方法进行操作,另一种是通过pandas的read_sql()进行读取并操作.各种方法各有优劣, ...

  6. 如何使用python连接mysql数据库

    如何使用python连接mysql数据库 1.要想让python能够连接到mysql,首先就是要先下载安装pymysql的模块: Win+R 进入命令行,使用pip install pymysql安装 ...

  7. Java Jsp+Servlet+mysql实现的图书借阅系统(系统管理员/图书管理员/读者 功能:图书信息管理、图书借阅、我的借阅记录、管理图书、用户管理、反馈)

    博客目录 JSP图书借阅系统 主要功能点 实现功能截图 技术点总结 代码 写在最后 JSP图书借阅系统 随着社会经济的迅速发展和科学技术的全面进步以及计算机事业的飞速发展,以计算机科学与通信技术为基础 ...

  8. python连接mysql数据库数据库_python如何连接mysql数据库

    先花点时间来说说一个程序怎么和数据库进行交互 1.和数据库建立连接 2.执行sql语句,接收返回值 3.关闭数据库连接 使用MySQLdb也要遵循上面的几步.让我们一步步的进行. 1.MySQL数据库 ...

  9. 快速使用Python连接MySQL数据库的方法

    我是在Anaconda notebook中进行连接实验的,环境Python3.6,当然也可以在Python Shell里面进行操作. 最常用也最稳定的用于连接MySQL数据库的python库是PyMy ...

最新文章

  1. 5.基于STM32F103+OV7670的网络摄像头
  2. 7天学会spring cloud教程
  3. 开发日记-20190801 读书笔记《Linux 系统管理技术手册(第二版)》关键词logrotate 管理日志文件
  4. 【codeforces 768F】 Barrels and boxes
  5. 下载Nacos源码并运行
  6. 牛客网_PAT乙级_1028到底买不买(20)【用iterator迭代器,对两个vectorchar比较,删除相同元素】
  7. 六西格玛dfss_六西格玛系列知识之二:六西格玛管理的基本原理
  8. 数字的处理 :小数点四舍五入
  9. Java8新特性:使用Stream流递归实现遍历树形结构
  10. Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel 1
  11. spark规范化读取数据
  12. 系统安全之数据加密解密
  13. 皇帝的新脑-读书笔记
  14. itil 容量管理流程_ITIL的十个核心管理流程
  15. 如何在计算机设置鼠标宏,鼠标宏怎么设置,详细教您鼠标如何设置宏
  16. Win10系统完全卸载52好压的方法
  17. linux系统ss命令详解,ss命令 - Linux命令大全 | linux教程
  18. html 鼠标放上去变色,css3 鼠标经过div背景变色
  19. 10大开源的快速开发平台—架构师必看
  20. glassfish java环境_GlassFish安装和配置详解

热门文章

  1. InterruptException
  2. 用Python输出百钱买百鸡问题的答案
  3. DSLR Deep Stacked Laplacian Restorer for Low-Light Image Enhancement复现
  4. epoll模型实现及惊群效应
  5. 软件日志(系统日志)
  6. hwd分别是长宽高_衣柜长宽高标准尺寸一般是多少 衣柜怎么保养
  7. 为什么KEYNOTE导出HTML很大,给keynote文件瘦身
  8. SQL IFNULL函数
  9. 两条不重复的最大路径
  10. 华为云搭建MQTT服务器