返回

Python3.9数据库SQLite3学起(6)

发布时间:2023-01-09 19:44:19 393
# python# 数据库# sql# sqlite# 信息

(Python3.9数据库SQLite3学起(6))

学生分数管理系统

系统搭建框架如下:

一、几个函数的创建

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)
    # 把查到的结果写入values
    tables = 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"的缩写。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Python3.9数据库SQLite3学起(5) 2023-01-09 19:10:52