Python3操作SQLite数据库

转载自https://www.cnblogs.com/desireyang/p/12102143.html
Python3操作SQLite数据库
感谢原作者,写的非常详细

另外:

  • 可视化工具除了作者提到的navicat之外,还可以使用sqlitestudio,免费,单文件,绿色免安装,用起来感觉也非常不错。
    在这里插入图片描述
  • 还有就是connection对象有一个简便方法,不用创建cursor()对象,直接对connect对象使用execute函数即可。

class sqlite3.Connection SQLite 数据库连接对象有如下的属性和方法:

execute(sql[, parameters])
这是一个非标准的快捷方法,它会调用 cursor() 方法来创建一个游标对象,并使用给定的 parameters 参数来调用游标对象的 execute() 方法,最后返回这个游标对象。

executemany(sql[, parameters]) 这是一个非标准的快捷方法,它会调用 cursor()
方法来创建一个游标对象,并使用给定的 parameters 参数来调用游标对象的 executemany() 方法,最后返回这个游标对象。

executescript(sql_script) 这是一个非标准的快捷方法,它会调用 cursor()
方法来创建一个游标对象,并使用给定的 sql_script 参数来调用游标对象的 executescript()方法,最后返回这个游标对象。

Python3操作SQLite数据库

SQLite

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2019年已经有19个年头,SQLite也迎来了一个版本 SQLite 3已经发布。[摘自SQLite百度百科]

功能特性

  • ACID事务
  • 零配置 – 无需安装和管理配置
  • 支持数据库大小至2TB
  • 比一些流行的数据库在大部分普通数据库操作要快
  • 独立: 没有额外依赖
  • 支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等

数据类型

  • Typelessness(无类型)
  • 支持常用的数据库类型

使用Python3操作SQLite

python2.5以后的安装包已经自带SQLite3的软件包了,所以直接导入使用即可。

import sqlite3

第一步:连接数据库(如果数据库不存在就会创建新的数据库)

# 可以指定创建数据库的路径,比如可以写成sqlite3.connect(r"E:\DEMO.db")
con = sqlite3.connect("DEMO.db")

第二步:创建游标

cur = con.cursor()

第三步:CURD操作

(一) 创建表
sql = "CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)"
cur.execute(sql)

创建完数据库和表后的结构示意图:

在这里插入图片描述

(二) 添加数据(需要提交)
# ①:添加单条数据
data = "1,'Desire',5"
cur.execute('INSERT INTO test VALUES (%s)' % data)
# ②:添加单条数据
cur.execute("INSERT INTO test values(?,?,?)", (6, "zgq", 20))
# ③:添加多条数据
cur.executemany('INSERT INTO test VALUES (?,?,?)', [(3, 'name3', 19), (4, 'name4', 26)])

操作后的数据库如下图:
在这里插入图片描述

(三) 更新数据(需要提交)
# 方式一
cur.execute("UPDATE test SET name=? WHERE id=?", ("nihao", 1))
# 方式二
cur.execute("UPDATE test SET name='haha' WHERE id=3")

操作后的数据库如下图:
在这里插入图片描述

(四) 删除数据(需要提交)
# 方式一
cur.execute("DELETE FROM test WHERE id=?", (1,))
# 方式二
cur.execute("DELETE FROM test WHERE id=3")

操作后的数据库如下图:
在这里插入图片描述

(五) 查询数据

数据库中的数据如下:

在这里插入图片描述
1、查询所有数据

cur.execute("select * from Test")
print(cur.fetchall())

结果如下:
在这里插入图片描述
2、查询第一条数据

cur.execute("select * from Test")
print(cur.fetchone())

结果如下:
在这里插入图片描述
3、查询多条数据

print(cur.fetchmany(3))

结果如下:
在这里插入图片描述

第四步:事务的提交和回滚

提交

con.commit()

回滚

con.rollback()
第五步:断开会话连接,释放资源
# 关闭游标
cur.close()
# 断开数据库连接
con.close()

关于SQLite数据类型的Typelessness(无类型)

创建一个无类型的表(创建表的SQL语句字段不加类型即可)

sql = "CREATE TABLE IF NOT EXISTS user(clo_1,clo_2,clo_3)"
cur.execute(sql)

创建成功后的结构:
在这里插入图片描述

添加数据的时候就可以添加任意类型的数据(没有限制)

sql = 'INSERT INTO user VALUES (?,?,?)'
data = [(9, 'name3', 19), ('name4', 26, "nihao"), ('nihao', 3, 2.89)]
cur.executemany(sql, data)
con.commit()

添加成功后的表内容:
在这里插入图片描述
*以上便是SQLite在Python中简单的操作,查看表结构可以用Navicat for SQLite可视化工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值