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)相关推荐

  1. 网络编程(wireshare抓数据包及分析、三次握手与四次挥手、数据库sqlite3及操作)笔记-day15

    前言 今天整理了网络编程的下篇,主要归纳了wireshark抓数据包及分析.TCP安全可靠原因分析(三次握手.四次挥手).数据库sqlite3及操作(shell脚本和C语言对数据库的增.删.改.查及关 ...

  2. 数据库sqlite3的安装与应用

    嵌入式数据库 一.ubuntu18.04 sqlite3安装 1.安装sqlite3 2. 安装sqlite3可视化工具sqlitebrowser 二.数据库基础知识(对于使用数据库作用不大,选看吧) ...

  3. Python数据库sqlite3详解(python使用sqlite3数据库编程案例)

    python使用sqlite3数据库编程案例 提到数据库,大家第一时间想到的可能是 sql 数据库, 这种数据库非常好用,但是对于新手就不是很容易上手, 需要熟悉一段时间才可以大概掌握.这种数据库在大 ...

  4. Python基础092:Python内置数据库: sqlite3

    Python内置数据库: sqlite3 SQLite简介 前置知识点复习 python中实践 sqlite 查询记录 注意事项 总结 SQLite简介 SQLite是一种嵌入式数据库,它的数据库就是 ...

  5. 文件数据库sqlite3 C++ 线程安全和并发

    转载:文件数据库sqlite3 C++ 线程安全和并发 - 车臣 - 博客园 转载:SQLite 线程安全和并发 - zzfx - 博客园(线程安全和并发) 转载:SQLite 多线程模型实测分析 - ...

  6. c/c++使用数据库sqlite3

    1 打开数据库连接sqlite3_open用法 原型: int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ ...

  7. Android中如何使用命令行查看内嵌数据库SQLite3

    转载博客:http://www.linuxidc.com/Linux/2011-06/37135.htm 在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令. [1]在Andro ...

  8. 查看android数据库sqlite3中的表及数据、直接编辑数据库

    具体的操作过程如下: 1> 找到adb并运行: 一般位于android sdk的的tools/(老版本)或者 platform-tools/ (新版本) 2. 切换到该目录,运行 ./adb h ...

  9. django默认数据库sqlite3改为mysql

    来个自用的完整版的 """ Django settings for mysite project.Generated by 'django-admin startproj ...

最新文章

  1. 时间统计%time和%timeit_python
  2. 功能、资源权限管理的设计
  3. jdbc获取结果行数,如何获取JDBC中的行数?
  4. learnpythonthehardway下载_LearnPythonTheHardWay学习笔记1:学习环境搭建
  5. 【Unity与23种设计模式】访问者模式(Visitor)
  6. 深度学习TensorFlow的55个经典案例
  7. EF分组后把查询的字段具体映射到指定类里面的写法
  8. python 线程-threding示例使用
  9. route命令(详细)
  10. python计算权重_python 计算权重的代码
  11. 【CVPR 2022】目标检测SOTA:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
  12. get_sequencer的用法总结
  13. 5.3.2 jmeter组件-线程组:setUp线程组和tearDown线程组
  14. jmeter性能测试之分布式
  15. 2念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yi er san si
  16. 如何使用 DiskGenius 合并分区教程
  17. 阿里云服务器相关操作
  18. __kfifo_put和__kfifo_get
  19. 7-1 求两点之间距离
  20. micropython plc_Python pycomm包_程序模块 - PyPI - Python中文网

热门文章

  1. 非常喜欢微信公众号最近的几个新能力
  2. 唯美烟花特效登录页面,我感觉自己又行了
  3. 罗技G304接收器无反应问题,现象及解决方法
  4. 第一天之导入Vuetify的坑
  5. PCB板材及叠层结构
  6. 辐射探测 期末考试 考完后的recheck!oh,老baby,高纯锗要低温呀!!
  7. 香港服务器部署网站慢,用香港云主机服务器网站慢怎么解决?
  8. 如何在阿里云物联网平台新增一个设备
  9. 如何选挂耳式运动耳机?六款挂耳式运动耳机推荐
  10. 2kids学汉字 android,新2Kids学汉字