嗨喽~~  本期九娘给广大卷友们带来了sql语句轻型数据库的使用教程哦

1.需要的模块(只有一个)
import sqlite3
2.模块的使用
首先打开我们的编译器(推荐使用vscode,因为数据库文件后缀是 .db,vscode里显示比较清楚)

2.1创建与数据库的连接
先放上代码

conn = sqlite3.connect('test.db')
使用 sqlite3 的 connect 函数可以创建数据库或者连接数据库,

如果这个数据库存在,就连接这个数据库,

如果这个库不存在,就创建数据库。

右边小括号里的是数据库名。

我们把这个保存在变量 conn 里,这个变量名可以自己起

公式:

变量名(coun) = sqlite3.connect( '你要的数据库名.db' )
2.2创建游标
还是先放代码

cur = conn.cursor() | 游标变量名 = 变量名(coun).cursor()
在 2.1 中,我们创建了与数据库的连接,我们现在还需要一个游标来执行 sql 命令,

所以我们要用 conn 的 cursor 函数创建一个游标。

conn 就是刚才 2.1 中创建的保存数据库的变量,你要用你定义的变量名,

再定义一个变量表示这个游标。

公式:

游标变量名 = 变量名(coun).cursor()

2.3创建 table
先放代码

这里是常用的一些操作:

import sqlite3# 创建数据库和连接数据库
数据库变量 = sqlite3.connect("数据名字.db")# 创建游标对象 来执行sql命令
变量 = 数据库变量.cursor()# 创建表: 存储数据 {"name": xx(数据类型)}
create table 表名(xx XX, xx XX, )
# 字符串 TEXT VARCHAR(255)
# 整数 NUMBER INT INTEAGR
# 时间类型 DATE DATETIME
# 浮点型 FLOAT # 插入数据 多行插入
sql = insert into 表名 values(?,?)
executmany(sql, data)# 查找数据
select * from 表名;
select * from 表名 where 字段名 = 值 order by 字段名[desc]# 查找
游标.fetchall()# 删除
delete from 数据表;所有的记录全部删除
delete from 数据表 where 条件表达式;
import sqlite3
def check(db_name,table_name):   #写个函数用来查看是否存在该表conn = sqlite3.connect(db_name)cursor = conn.cursor()sql = '''SELECT tbl_name FROM sqlite_master WHERE type = 'table' '''cursor.execute(sql)values = cursor.fetchall()tables = []for v in values:tables.append(v[0])if table_name not in tables:return False # 可以建表else:return True # 不能建表
conn = sqlite3.connect('database.db')
#创建一个游标 cursor
cur = conn.cursor()
if (check("datebase.db","Table") == False):sql_text_1 = '''CREATE TABLE yourtable(xx XX,xx XX);'''# 执行sql语句cur.execute(sql_text_1)
#代码比较长,因为我把 2.1 和 2.2 的两行代码也加了上去。#我们需要 table(表)来存数据,创建 table 的代码如下:varname = '''CREATE TABLE yourtable(xx XX,xx XX);'''
# 执行sql语句
cur.execute(varname)

上面是用一个变量保存了创建 table 的 sql 语句,

下面使用 cur(就是刚才那个游标).execute() 函数执行创建 table 的语句。

我们也可以使用 cur.executemany 函数来同时执行多条 sql 语句。

sql 语句的内容,比如创建表的格式是上面这样的

格式:' ' 'CREATE TABLE 你的 table 名 (xx XX, xx XX);' ' '

这行代码里小写的 xx 就是你要的属性名,比如你的数据库是这样

姓名    班级
张三    1
其中,属性名就是 “姓名” 和 “班级”,

小写的 xx 就应该分别写姓名和班级(注意,不带引号)

后面的大写的XX就是这个属性所接受的数据的类型,

就相当于Python中的 int 类型和 str 类型。

只不过,我们在 sql 语句中,把 int 类型改成了 NUMBER,把 str 类型改成了 TEXT。

当我们运行这个代码,我们的文件夹目录里会多出来一个 你的数据库名.db 文件

当我们再次运行,会发现程序报错了。

报错信息的大概意思是:table 已经存在了。

这是因为我们第一次运行时已经创建了 table ,我们再次运行时,

程序会再次创建同名 table,就会报错。

所以,我们创建 table 之前要判断一下这个table存不存在,如果存在就不创建,如果不存在就创建

这个判断我把它写成了一个函数,就是我上面代码那个 check 函数。

这一步也是我想了好长时间,还找资料找了好长时间才知道的

2.4插入数据
先放代码

cur.executemany('INSERT INTO 你的table名 VALUES (?,?)', data)
conn.commit()
其中第一行代码中 executemany() 函数的意思就是同时执行多个 sql 语句。

这个函数的括号里写的逗号前面就是插入数据的 sql 语句,后面 data 可以是一个列表或者元组。注意,如果是列表的话,必须是列表里面有若干个元组的形式。

插入数据的 sql 语句的使用:

INSERT INTO 你的table名 VALUES (若干个逗号,用逗号分割)

这里我们要插入 data 这些数据,所以在括号里我们使用问号 “?” 来代替这个元素。

大家可以回去看一下 2.3 创建table 的讲解,在2.3中,我们创建了两个属性,分别是 “姓名” 和 “班级”。因为我们有两个属性,所以要有两个问号。

2.5查找数据
先放代码

def find_tb():
    cur.execute("select * from 你的table名")
    # 提取查询到的数据
    return cur.fetchall()  #fetch  翻译成中文:取到
这个就很简单了,我写这个函数使用时可以把你那个table里的所有数据都取出来。

第一行是查找table的 sql 语句,格式是:

select * from 你的table名

下一行再用 fetchall() 函数把数据提取出来,直接 return 即可。

实例展示:学生成绩管理系统

代码:

import sqlite3
import os
def check(db_name,table_name):conn = sqlite3.connect(db_name)cursor = conn.cursor()sql = '''SELECT tbl_name FROM sqlite_master WHERE type = 'table' '''cursor.execute(sql)values = cursor.fetchall()tables = []for v in values:tables.append(v[0])if table_name not in tables:return False # 可以建表else:return True # 不能建表
def find_tb():cur.execute("select * from scores")# 提取查询到的数据return cur.fetchall()
def zcd():os.system('cls')print("学生分数管理系统")print("1.增加学生分数信息")print("2.查看全部学生分数")print("3.查询分数段内学生分数")print("4.退出")if __name__ == '__main__':# 创建与数据库的连接conn = sqlite3.connect('stuents_scores.db')#创建一个游标 cursorcur = conn.cursor()# 如果没有表则执行建表的sql语句if (check("stuents_scores.db","scores") == False):sql_text_1 = '''CREATE TABLE scores(姓名 TEXT,班级 TEXT,性别 TEXT,语文 NUMBER,数学 NUMBER,英语 NUMBER,总分 NUMBER);'''# 执行sql语句cur.execute(sql_text_1)zcd()while True:op = int(input("请输入:"))if op == 1:S_name = input("请输入要添加的学生的姓名(如:张三):")S_class = input("请输入要添加的学生的班级(如:一班):")S_xb = input("请输入该学生性别:")S_Chinese = int(input("请输入该学生语文成绩(只输入一个数字,如:82):"))S_Maths = int(input("请输入该学生数学成绩(只输入一个数字,如:95):"))S_English = int(input("请输入该学生英语成绩(只输入一个数字,如:98):"))S_gj = S_Maths+S_Chinese+S_English # 总分data = [(S_name, S_class, S_xb, S_Chinese, S_Maths, S_English,S_gj)]cur.executemany('INSERT INTO scores VALUES (?,?,?,?,?,?,?)', data)conn.commit()# cur.close()# conn.close()print("成功!")os.system('pause')os.system('cls')zcd()elif op == 2:info_list = find_tb()print("全部学生信息(排名不分前后):")for i in range(len(info_list)):print("第"+str(i+1)+"个:")print("学生姓名:"+str(info_list[i][0]))print("学生班级:"+str(info_list[i][1]))print("学生性别:"+str(info_list[i][2]))print("学生语文成绩:"+str(info_list[i][3]))print("学生数学成绩:"+str(info_list[i][4]))print("学生英语成绩:"+str(info_list[i][5]))print("学生总成绩:"+str(info_list[i][6]))os.system('pause')os.system('cls')zcd()elif op == 3:info_list = find_tb()fen = int(input("你要要查询总成绩高于n分的学生, 请输入n:"))for i in range(len(info_list)):if info_list[i][6] >= fen:print("查询结果:")print("第"+str(i+1)+"个:")print("学生总成绩:"+str(info_list[i][6]))os.system('pause')os.system('cls')zcd()elif op == 4:os.system('cls')break

九娘先介绍到这里啦,有问题可以随时咨询哦~~

sqlite3数据库的使用相关推荐

  1. 【数据库】sqlite3数据库备份、导出方法汇总

    [数据库]sqlite3常用命令及SQL语句 目录 1.直接拷贝数据库 2.使用.backup .clone 1)交互式 2)脚本 3.导出到csv文件中(其它格式类似) 1)交互式 2)脚本 3)导 ...

  2. c从sqlite3数据库中获取数据,并对数据进行拼接

    c从sqlite3数据库中获取数据,并对数据进行拼接 函数功能 对数据库的操作 创建数据库: 创建USER表: 创建表内数据: 查看表内数据: 查看表结构: 函数实现 函数编译: 函数结果: 函数功能 ...

  3. 【Android 逆向】应用数据目录 ( files 数据目录 | lib 应用自带 so 动态库目录 | databases sqlite3 数据库目录 | cache 缓存目录 )

    文章目录 一.应用数据目录 /data/data/package.name/files 二.自带 so 动态库 /data/data/package.name/lib 三.数据库文件 /data/da ...

  4. python把数据写入excel_Python读写sqlite3数据库的方法并且将数据写入Excel的实例详解...

    这篇文章主要介绍了Python实现读写sqlite3数据库并将统计数据写入Excel的方法,涉及Python针对sqlite3数据库的读取及Excel文件相关操作技巧,需要的朋友可以参考下 本文实例讲 ...

  5. 导入xlsx,文件到sqlite3数据库

    导入xlsx,文件到sqlite3数据库 工作需要使用到本地数据库,需要把xlsx表里的数据导入到sqlite数据库里在将数据库放到app里来使用,看了下资料弄完了觉得挺简单的分享下 首先就是需要查看 ...

  6. 用java连接Excel和SQLite3,实现从excel文件读取数据并将其存入SQLite3数据库中

    java与Excel的连接用到了jxl.jar开源包,与SQLite3的连接用到了sqlitejdbc-v056.jar这个开源包,两个开源包打包下载:传送门 如果使用的eclipse做开发,解压后按 ...

  7. IOS开发基础之SQLite3数据库的使用增删改查

    IOS开发基础之SQLite3数据库的使用增删改查 ios开发我们可能会使用到数据库进行持久化存储.sqlite3 是轻量级的数据库. 今天我们来介绍sqlite3 数据库.此方法跟java的增删改查 ...

  8. [Android]AndroidInject增加sqlite3数据库映射注解(ORM)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3623050.html AndroidInject项目是我写的一 ...

  9. Sqlite3 数据库基本操作

    Sqlite3 数据库基本操作 1.sqlite3命令 **2.sqlite3编程接口:** 3.事务:一个或多个更改数据库的扩展 4.like和glob子句: 5.limit 和 offset 6. ...

  10. 使用python将数据存入SQLite3数据库

    Python从网站上抓取的数据为了可以重复利用,一般都会存储下来,存储方式最简单的会选择存储到文本文件,常见的有方式TXT.CSV.EXCEL等,还有一种方式是将数据存储到数据库,这样也方便管理,常见 ...

最新文章

  1. 第三课.运算符与表达式
  2. mongodb php 存储文件大小,PHP MongoDB GridFS 存储文件的方法详解
  3. 周末一起用文本数据库玩玩Code First
  4. struts1 几种Action父类的比较
  5. 《学习OpenCV3(中文版)》图书目录
  6. 2.5 使用scriptfiles
  7. 有条件忽略测试的JUnit规则
  8. 解决 :sudo:/etc/sudoers 可被任何人写
  9. ACL20 Best Paper揭晓!NLP模型评价体系或将迎来重大转折
  10. torch tensor去掉1维_浑身是刺的“维c之王”,有人管它叫“菠萝”,有人管它叫“梨”...
  11. SpringBoot中LogBack日志输出配置记录
  12. 2019蓝桥杯C++B组 年号字串;完全二叉树的权值
  13. 一键清理电脑垃圾小程序
  14. vue 运行启动命令_如何使用Vue启动和运行
  15. Mybatis项目错误:Type interface dao.UserMapper is not known to the MapperRegistry.
  16. intel UHD graphics 620/630 -win7 驱动
  17. d2i_X509 载入der文件返回为空
  18. Xshell用Public Key登录华为网络设备(交换机等)
  19. informatica 许可_安装Informatica9.5.1
  20. mysql的group语句_MySQL中distinct与group by语句的一些比较及用法讲解

热门文章

  1. 网络工程师必知:网关与防火墙有什么区别?
  2. [C语言]static关键字--#define 定义常量和宏--初识指针--初识C语言(四)
  3. uniapp+egg.js获取微信步数(wx.getWeRunData)
  4. 如何为py图表添加坐标轴/标题/图例等辅助元素
  5. 移动开发技术第一次大作业
  6. genymotion镜像下载慢使用迅雷下载
  7. 2. 样式,大纲和目录
  8. 关于世界杯的一篇文章-ChatGPT
  9. 书终于出来了:《Unity3D平台AR与VR开发快速上手》
  10. 街霸 隆(Ryu)升龙拳(Syoryuken)动画(四)制作过程中几个版本动画比较一下