SQLite 非官方简介

sqlite正如它的名字所包含的“lite”那样,是一个轻量级的数据库,能够在一些嵌入式设备中使用,因为运行它只需要几百K的内存。

SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。

其实,这东西就在我们身边,安卓系统就内置的就有,并且被系统本身也使用着。另外著名的Python web框架Django,配置文件就是使用的sqlite。

SQLite 与Python3

sqlite目前最新版本是sqlite3,由于是sqlite很小,它已经被内嵌在很多语言中,Python使用sqlite只需要

import sqlite3

即可。学习sqlite之后,再学习mysql你就会觉得很简单,因为很多sql语句是一样的,甚至是通用的。

SQLite的基础数据类型

NULL 值是一个 NULL 值。
INTEGER 值是一个带符号的整数
REAL 值是一个浮点值
TEXT 值是一个文本字符串
BLOB 值是一个 blob 数据,完全根据它的输入存储。

其中BLOB 其实就是“binary long object”,也即是二进制长对象,我们可以以二进制的形式,把图片,声音,或者是视频等这类“大文件”,存到数据库中。虽然sqlite是轻量级数据库,但是单个sqlite文件,能够存储140TB的数据。

创建一个SQLite数据表

先多嘴几句,一个SQLite的文件(xxx.db),我们可以理解为一个“库”,这个库中可以有很多个“表”,那我们来创建一个“表”吧。

import sqlite3

#使用connect方法链接到 当前目录下的zen.db’数据库,没有的话,它会自动创建一个
con = sqlite3.connect("zen.db")

cur = con.cursor()

#sql语句
sql = '''create table person(
        id INT PRIMARY KEY     NOT NULL,
        name TEXT,
        age INT);'''

#执行sql语句
cur.execute(sql)
con.commit()

#关闭数据库
con.close()

这样我们就成功的创建了一个数据表‘person’,它有三个字段,分别是id,name,age。

可以借助SQLiteStudio这个软件查看一下

 

实现批量插入数据

先看一下如何插入数据:

import sqlite3

#使用connect方法链接到 当前目录下的zen.db’数据库,没有的话,它会自动创建一个
con = sqlite3.connect("zen.db")

cur = con.cursor()

#sql语句
sql = '''insert into person(id, name, age)
        values (1,'Coder之禅',1)'''

#执行sql语句
cur.execute(sql)
con.commit()

#关闭数据库
con.close()

 

这样,我们就在person表中,插入了一行数据,id=1,name='Coder之禅',age=1,有图有真相。

与最上面的代码片段相比,这里的代码也就sql语句和上面有所不同了。

上面的代码虽然简短,但Python操作SQLite最长用到的就是那几个方法,数据库要用到的增删查改在于sql语句的表达不同。

事实上,mysql 、mongodb等数据库也是类似,给我们接口,我们去操作它。

正题,实现批量插入

上面已经说了,不同之处在于sql语句的表达不同,我们只需要构造出合法的sql语句即可。换句话说,我们可以写一个sql的模板。

基于上面的例子来修改一下。

import sqlite3

#使用connect方法链接到 当前目录下的zen.db’数据库,没有的话,它会自动创建一个
con = sqlite3.connect("zen.db")

cur = con.cursor()

#声明好相关变量
table_name = "person"
idid = 2
name = "测试"
age = 18

#sql语句
sql = '''insert into '%s'(id, name, age)
        values ('%d','%s','%d')''' % (table_name, idid, name, age)

#执行sql语句
cur.execute(sql)
con.commit()

#关闭数据库
con.close()

这里使用的是占位符,%s 表示字符串,%d表示整型,还有一些可以参考下图。我们可以把上面的代码封装为方法,每次给不同的参数即可实现批量插入。

写在最后

至于其他的增删查改,请自行搜索sqlite3教程,只是sql语句不同,不再赘述。

添加新评论