Python3.9数据库SQLite3学起(6)
Python3.9数据库SQLite3学起(6)
- 学生分数管理系统
- 系统搭建框架如下:
- 一、几个函数的创建
- 1、check函数——查重函数
- 2、menu_func函数——功能菜单
- 3、search_func函数——查询成绩
- 二、主程序的编写
- 1、创建表的DDL语句,也是先检查再创建
- 2、while无限循环让用户选择菜单功能
- 3、关闭游标、关闭库的连接
- 三、回忆错误调试
- 1、虚拟系统表中查找要创建的表,没有就创建,有就使用
- 2、打印输出时,字符乱码的处理
- 3、用户录入信息的几点注意
- 4、几个数据库名称的一致
- 补充:pause和cls
学生分数管理系统
系统搭建框架如下:
一、几个函数的创建
1、check函数——查重函数
- 与上节那段代码一致,老师讲的不适用,改正我这种笨笨的,用切片,只适用于本例,换了场景就不好用,硬着陆了。
# 查重函数————查找数据库里面是否有已知表
def check(db_name, table_name):# 建库,这个想起红警里面的基地conn = sqlite3.connect(db_name)# 建标inCu = conn.cursor()# 定义并执行查重语句sql_ch = f"""select name from sqlite_master where name = '{table_name}'"""# 使用游标执行上面sql语句,得到scores的表名inCu.execute(sql_ch)# 把查到的结果写入valuestables = inCu.fetchall()# 以下打印是用来测试代码用# print(tables)# print(type(tables))# print('----------------')if tables != []:if table_name in tables[0][0]:return True # 不可建表else:return False
2、menu_func函数——功能菜单
- 这是进入程序,第一步要显示的内容,效果展示如下。
使用的方法代码,最后见总程序。
3、search_func函数——查询成绩
# 查询函数
def search_func():# 执行select查询语句,没有设置子菜单,只是查询所有学生成绩记录myCursor.execute("select * from scores")# 返回查询结果return myCursor.fetchall()
- 在每个cursor.execute之后,只能使用cursor.fetchall一次。它“耗尽”光标,获取所有数据,然后无法再次“读取”。因此在主函数中,pause任意键后继续调用主菜单函数。效果如下:
这样,每次只读一条记录,然后一步步把所有的记录读完。
二、主程序的编写
1、创建表的DDL语句,也是先检查再创建
以下几个步骤
(1)连数据库
(2)建游标
(3)利用查重函数判断是否建学生分数表
(4)进入主菜单
(5)开始无限循环
2、while无限循环让用户选择菜单功能
- while无限循环的使用,要注意段落范围。
- 1—4是菜单功能选择后要进行相应处理的程序代码
3、关闭游标、关闭库的连接
- 单纯关闭库,而不关闭游标,它会继续存在,所以,断开库连接前,一定关闭游标
三、回忆错误调试
1、虚拟系统表中查找要创建的表,没有就创建,有就使用
- 这里用了硬代码,目前水平,只能硬来,如图
- 上面图片里面很明显,打印出列表值之后,再切片,然后就可以用来在后面主程序里面来比对了,此处用了两个if语句,出现两种情况,才这么处理的。
(1)只用一个if语句,带上切片的情况:当没有此表,虚拟系统表里面没数据,此处就返回range的溢出报错。
(2)只用一个if语句,不带切片的情况:当数据库里面有此表 ,显示如下图的的报错,说明没用切片,数值不匹配。
2、打印输出时,字符乱码的处理
- 一话不说,上图。
- 运行——编辑配置——在输出控制台中模拟终端。不行的话,点了对号,应用,再点上确定。
3、用户录入信息的几点注意
- 字段数量对应,字符串类型转化数值类型。。。
4、几个数据库名称的一致
- 最后一晚,一个很简单的错误,可是害我搞了一晚上,那就是出现的数据库名称不止一处,其中一处弄错了,出现稀奇古怪的问题,亲们可以改了试试。
补充:pause和cls
pause的效果,实现“请按任意键继续……”,也就是刚才乱码的地方。
cls是一个老DOS命令了,就是"clear the screen"的缩写。
Python3.9数据库SQLite3学起(6)相关推荐
- 网络编程(wireshare抓数据包及分析、三次握手与四次挥手、数据库sqlite3及操作)笔记-day15
前言 今天整理了网络编程的下篇,主要归纳了wireshark抓数据包及分析.TCP安全可靠原因分析(三次握手.四次挥手).数据库sqlite3及操作(shell脚本和C语言对数据库的增.删.改.查及关 ...
- 数据库sqlite3的安装与应用
嵌入式数据库 一.ubuntu18.04 sqlite3安装 1.安装sqlite3 2. 安装sqlite3可视化工具sqlitebrowser 二.数据库基础知识(对于使用数据库作用不大,选看吧) ...
- Python数据库sqlite3详解(python使用sqlite3数据库编程案例)
python使用sqlite3数据库编程案例 提到数据库,大家第一时间想到的可能是 sql 数据库, 这种数据库非常好用,但是对于新手就不是很容易上手, 需要熟悉一段时间才可以大概掌握.这种数据库在大 ...
- Python基础092:Python内置数据库: sqlite3
Python内置数据库: sqlite3 SQLite简介 前置知识点复习 python中实践 sqlite 查询记录 注意事项 总结 SQLite简介 SQLite是一种嵌入式数据库,它的数据库就是 ...
- 文件数据库sqlite3 C++ 线程安全和并发
转载:文件数据库sqlite3 C++ 线程安全和并发 - 车臣 - 博客园 转载:SQLite 线程安全和并发 - zzfx - 博客园(线程安全和并发) 转载:SQLite 多线程模型实测分析 - ...
- c/c++使用数据库sqlite3
1 打开数据库连接sqlite3_open用法 原型: int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ ...
- Android中如何使用命令行查看内嵌数据库SQLite3
转载博客:http://www.linuxidc.com/Linux/2011-06/37135.htm 在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令. [1]在Andro ...
- 查看android数据库sqlite3中的表及数据、直接编辑数据库
具体的操作过程如下: 1> 找到adb并运行: 一般位于android sdk的的tools/(老版本)或者 platform-tools/ (新版本) 2. 切换到该目录,运行 ./adb h ...
- django默认数据库sqlite3改为mysql
来个自用的完整版的 """ Django settings for mysite project.Generated by 'django-admin startproj ...
最新文章
- 时间统计%time和%timeit_python
- 功能、资源权限管理的设计
- jdbc获取结果行数,如何获取JDBC中的行数?
- learnpythonthehardway下载_LearnPythonTheHardWay学习笔记1:学习环境搭建
- 【Unity与23种设计模式】访问者模式(Visitor)
- 深度学习TensorFlow的55个经典案例
- EF分组后把查询的字段具体映射到指定类里面的写法
- python 线程-threding示例使用
- route命令(详细)
- python计算权重_python 计算权重的代码
- 【CVPR 2022】目标检测SOTA:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
- get_sequencer的用法总结
- 5.3.2 jmeter组件-线程组:setUp线程组和tearDown线程组
- jmeter性能测试之分布式
- 2念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yi er san si
- 如何使用 DiskGenius 合并分区教程
- 阿里云服务器相关操作
- __kfifo_put和__kfifo_get
- 7-1 求两点之间距离
- micropython plc_Python pycomm包_程序模块 - PyPI - Python中文网