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语句不同,不再赘述。
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
作者: Austin 发表日期:2020-06-06 17:00