Django 用户认证 用户 邮箱登录 邮箱注册 ORM or,and,not form.py FORM ModelForm Paginator 分页 HTMl JQuery 定位元素 ajax django切片 restfulapi 跨域 Ubantu Python Mysql Scrapy 爬虫 导出 Python读写 Pycharm 破解 session re sqlit3 生成式 其他 Prism 富文本 CSS Nginx 部署 请求头 抓包 协议 selenium Ubuntu 宝塔 AI Comfy-ui ollama dify open-webui Git docker
什么是数据库?数据库是用于保存大量的,格式统一的数据,比如name,age,score。数据库的内部结构是由多个表tab
张建行 2021年9月24日 11:12 42 文章标签: Mysql sqlit3

 
# 什么是数据库?数据库是用于保存大量的,格式统一的数据,比如name,age,score。数据库的内部结构是由多个表table构成的,每个表中有很多个字段构成的。
# 数据库管理多张表,表管理多个字段,字段里面存在数据。

# 数据库的分类:数据库分关系型数据库和非关系型数据库两种

# ————————关系型数据库————————
# 关系型数据库的特点:表和字段,数据和数据之间的关系都存在着关系。
# 优点: 1. 数据之间都存在着相互的联系,有利于数据之间的增删改查。
# 优点:2. 关系型数据库有事务操作,能保证数据库的完整性和一致性。

# 缺点:1. 数据和数据之间存在着关系,它的底层运行了大量的算法,这样会降低系统的效率和性能
# 缺点:2. 面对海量数据的增删改查操作会显得无能为力。

# 常见的关系型数据库:sqlite3,MySQL,SQLserver,qracle

# ————————非关系型数据库————————
# 非关系型数据库的特点:数据和数据之间不存在联系,他们之间是单独存在的
# 优点:1. 可以对海量的数据进行增删改查。
# 优点:2. 对海量的数据进行维护和处理的效率很高。

# 缺点:1. 非关系型数据库数据和数据之间没有存在关系,所以也没有强大的事务关系。
# 缺点:2. 虽然处理海量的数据效率很高,但是安全性很差。

# 常见的非关系型数据库:Redis,MongoDB

# 数据库的操作三步骤
# 1. 先链接数据库文件
# 2. 进行数据库的写入和读取
# 3. 管理数据库

import sqlite3
# 1. comment():负责数据库文件连接的一个函数,当要连接的数据库文件不存在的时候,会默认在当前目录下自动创建一个新的数据里文件
connect = sqlite3.connect('sqltest.db')
# 2. 要操作数据库,要先获取数据库游标,通过游标来操作表,接着对表里的数据进行增删改查的操作。
cursor = connect.cursor()
# 3. 数据库文件链接上了,游标也创建好了,接着就可以创建表,并且对表里的数据进行增删改查。
# 创建表(通过SQL语句来创建一个表)
# student:是表名
# id,name,age,score:表的字段
# INTEGER TEXT FLOAT:数据类型
# PRIMARY KEY:给id这个字段加约束,将id这个字段作为主键。
# 主键:主键是唯一的,不允许重复的,主要是给某一条数据设置一个唯一的标识,方便数据的查找和定位。
# if not exists:当表不存在则创建,存在则不创建,不会抛出异常
create_table = "create table if not exists student(id INTEGER PRIMARY KEY,name TEXT,age INTEGER,score FLOAT)"
# 通过游标执行创建表的SQL语句
cursor.execute(create_table)

# 通过SQL语句向表中插入一条数据where not exists(如果这个条件成立那么就不执行,否则就插入这条数据)
insert_sql = "insert into student(name,age,score) select '张三',22,76 where not exists (select * from student where name='张三')"
cursor.execute(insert_sql)
# 通过SQL语句更改表中的内容
# where后面跟的是筛选条件
update_sql = "update student set name='%s',age=%d,score=%2.f where name='张建行'"%('张三',10,55.567)
cursor.execute(update_sql)
# 通过SQL语句查询表中的数据
# *:查询所有数据
select_sql = "select * from student where age<20"
result = cursor.execute(select_sql)
# for x in result:
#     print('我是x',x)
# fetchall():获取结果集的全部数据,一条数据对应着一个元组,然后再将这些元组嵌套在列表中进行返回
# print(result.fetchone())
# fetchone():获取结果集的一条数据,返回结果是一个由字段对应的数据组成的一个元组
# result.fetchone()
res = result.fetchall()
for tuple_tes in res:
   print('id是%s'%tuple_tes[0])
   print('name是%s'%tuple_tes[1])
   print('age%s' % tuple_tes[2])
   print('score%s' % tuple_tes[3])

# 删除表中的数据(SQL语句)
delete_sql = "delete from student where name='张三'"
cursor.execute(delete_sql)
# 提交操作
connect.commit()
# 关闭游标
cursor.close()
# 关闭数据库
connect.close()