发布于2019-10-11 13:38 阅读(612) 评论(0) 点赞(11) 收藏(2)
已知某校在2019年约有四千名新生,为了便于管理新生信息,今天我们就来对这四千多条数据进行处理,实现类似excel表的筛选功能.
我们先来看一看界面:
我们可以根据用户需求创建功能:
以上功能可以随时添加或修改.有了需求便可以开始对数据进行操作了,先给大家看一下我的数据表结构:
关于建表的操作,大家可以查看我的博客:
抓取中国天气网当前时段所有城市的天气数据(python+xpath)
https://blog.csdn.net/zbp_12138/article/details/101617083
里面有提到如何创建数据表.
创建好数据库以后,导入即可,由于数据含有学生隐私信息,我这里不会公开,我只讲操作数据的具体方法,但是为了给大家展示一下我的数据表里,确实是有数据的,我在这里只展示未编码的部分数据:
好了,我们开始吧:
导入相关资源库:
from pymysql import *
我定义一个类来完成今天的项目:
class Inquire(object):
pass
def main():
inquire = Inquire()
inquire.run()
if __name__ == '__main__':
main()
pass代表我下面要讲的内容
我们先来写文章最开始时见到的4个功能:
def run(self):
while True:
num = self.print_num()
if num == "1":
self.get_all_infors()
elif num == "2":
self.get_robot_infors()
elif num == "3":
self.find_area()
elif num == "4":
print("欢迎您下次继续使用!")
break
else:
print("error!请重新输入!")
为了让用户知道每个数字代表什么内容,我们在前面最好加上解释说明:
@staticmethod
def print_num():
while True :
print("-"*50)
print("1:查询所有学生信息")
print("2:查询某学院所有学生信息")
print("3:根据出生日期区间查找学生")
print("4:退出程序")
num = input("请输入数字:")
print("-"*50)
return num
解释一下:
@staticmethod是静态方法,类或实例均可调用,是类的工具包,放在函数前,该函数不传入self或者cls,所以不能访问类属性和实例属性
好了,接下来我们只需要完善功能就可以了:
连接数据库:
ef __init__(self):
try:
self.conn = connect(host = '127.0.0.1',
port = 3306,
user = 'root',
password = 'root',
charset = 'utf8',
db = 'test')
self.cursor = self.conn.cursor()
except Exception as e:
print(e)
查询所有学生信息
def get_all_infors(self):
sql = 'SELECT * FROM buudata2019'
try:
self.cursor.execute(sql)
for item in self.cursor.fetchall():
print(item)
except Exception as e:
print(e)
查询某学院所有学生信息
def get_robot_infors(self):
print("-"*50)
print("城市轨道交通与物流学院")
print("管理学院")
print("机器人学院")
print("旅游学院")
print("师范学院")
print("特殊教育学院")
print("艺术学院")
print("应用科技学院")
print("智慧城市学院")
print("-"*50)
aca_name = input("请输入要查询的学院:")
sql = 'select * FROM buudata2019 WHERE aca = "%s" '%aca_name
try:
self.cursor.execute(sql)
for item in self.cursor.fetchall():
print(item)
except Exception as e:
print(e)
根据出生日期区间查找学生
def find_area(self):
print("请输入正确的生日区间(如:20191002)")
min = int(input("请输入最小值:"))
max = int(input("请输入最大值:"))
sql = 'select * FROM buudata2019 WHERE bir >= %s AND bir <= %s'%(min,max)
try:
self.cursor.execute(sql)
for item in self.cursor.fetchall():
print(item)
except Exception as e:
print(e)
为了以防用户输入错误的信息,导致程序报错,我在这里添加了几个条件,若用户输入错误,则重新输入:
min = 00000000
while min == 00000000:
try:
min = int(input("请输入最小值:"))
while( min == 00000000 ):
min = int(input("请输入最小值:"))
except Exception as e:
print(e)
好了让我们看一看最终效果!
1:查询所有学生信息:
可以看到,一共有4014条学生信息,运行结束后不会退出程序,而是继续弹出提示框:
2:查询某学院所有学生信息
我选择查询 机器人学院
3:根据出生日期区间查找学生
4:退出程序
好了,以上就是全部内容,希望能对大家在写代码时有一定的帮助.
作者:听爸爸的话
链接:https://www.pythonheidong.com/blog/article/134201/074811ed168a4251523b/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!