前言
sqlite的官网 sqlite.org/index.html SQLite 作为一个SQL数据库引擎,是由C语言实现的,又小又快,具有高可靠性且功能齐全。 作为嵌入式数据库,在移动设备中使用非常广泛且方便。Python3中内嵌了sqlite的驱动,我们直接导入就行。
1
|
import sqlite3
|
简单介绍
首先我们给大家一个能够运行的Python程序,让大家对Python操作sqlite数据库有一个直观的感受。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 导入SQLite驱动:
import sqlite3
# 连接到SQLite数据库
# 数据库文件是test.db
# 如果文件不存在,会自动在当前目录创建:
conn = sqlite3.connect( 'test.db' )
# 创建一个Cursor:
cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
cursor.execute( 'create table user (id varchar(20) primary key, name varchar(20))' )
# 继续执行一条SQL语句,插入一条记录:
cursor.execute( 'insert into user (id, name) values (\'1\', \'Michael\')' )
# 通过rowcount获得插入的行数:
print (cursor.rowcount)
# 关闭Cursor:
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()
|
我们用Navicat连接这个数据库,可以看到
需要注意的是每次关闭连接之前,一定要commit,否则做的任何操作都不会提交到数据库中
创建或连接数据库
conn = sqlite3.connect('test.db') 首先我们要做的是连接数据库,注意如果我们要访问的数据库不存在,那么会自动创建一个的 conn 就是一个数据库连接对象从上面的程序里我们可以看到
1.它可以创建一个游标cursor = conn.cursor()
2.它可以提交事务conn.commit()
3.它还可以关闭连接cursor.close()
4.它还可以对事务做回滚cursor.rollback(),不过程序之中没有展示出来
隔离级别可以在conn建立之前通过传入参数来进行修改
conn = sqlite3.connect('test.db', isolation_level=None) 这样,对应的代码就不再需要commit()操作了
游标
游标对象有以下的操作
1
2
3
4
5
6
7
|
execute() - - 执行sql语句
executemany - - 执行多条sql语句
close() - - 关闭游标
fetchone() - - 从结果中取一条记录,并将游标指向下一条记录
fetchmany() - - 从结果中取多条记录
fetchall() - - 从结果中取出所有记录
scroll() - - 游标滚动
|
我们一般用到的是execute()更多一些
创建表
下面的代码可以创建表
1
|
cursor.execute( 'create table user (id varchar(20) primary key, name varchar(20))' )
|
可以看到建表语句和MySQL非常类似 创建自增主键的语句
1
2
3
|
CREATE TABLE "main" . "test" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT
);
|
在Navicat的创建sqlite自增主键和MySQL也是非常类似
插入
插入这里很简单的
1
|
cursor.execute( 'insert into user (id, name) values (\'1\', \'Michael\')' )
|
查询
查询这里需要讲一讲 是要先让游标将sql语句执行掉,再通过上面介绍的
1
2
3
|
fetchone() - - 从结果中取一条记录,并将游标指向下一条记录
fetchmany() - - 从结果中取多条记录
fetchall() - - 从结果中取出所有记录
|
来进行查询
查询总数
1
2
3
|
cursor.execute( "select count(*) from user" )
print (cursor.fetchone())
# (2,)
|
查询所有
1
2
3
|
cursor.execute( "select * from user" )
print (cursor.fetchall())
# [('1', 'Michael'), ('2', 'Danny')]
|
查询第一条
1
2
3
|
cursor.execute( "select * from user" )
print (cursor.fetchone())
# ('1', 'Michael')
|
分页查询
1
2
|
cursor.execute( "select * from user LIMIT 1, 2" )
print (cursor.fetchall())
|
更新
更新呢也比较简单
1
|
cursor.execute( "update user set name='test' where id='1'" )
|
这里只要别忘了执行commit就行
删除
1
|
cursor.execute( "delete from catalog where id = 4" )
|
总结
人生苦短,我用 Python,在强大的Python帮助下,我们只需几行代码就可以操作sqlite数据库来储存查询我们想要的数据。
以上就是python 操作sqlite数据库的方法的详细内容,更多关于python 操作sqlite数据库的资料请关注服务器之家其它相关文章!
原文链接:https://juejin.cn/post/6975528484340760590