python3 连接sqlite3

​一、SQLite3 介绍


说明:


SQLite是一款轻量级的、基于文件的嵌入式数据库,实现自包容、零配置、支持事务的SQL数据库引擎。与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。第一个Alpha版本诞生于2000年5月,直到今天已经成为最流行的嵌入式数据库,包括Google在内的许多公司在其桌面软件中亦使用SQLite存储用户数据,由此看来,其稳定性毋庸置疑。

       实际应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正扮演着越来越重要的角色。和很多其它嵌入式NoSQL数据库(如BerkeleyDB、MemBASE等)不同的是,SQLite支持很多关系型数据库的基本特征,如标准SQL语法、事务、数据表和索引等,这在数据移植、程序演示等应用中有着不可替代的优势。从官方文档中我们可以获悉到,SQLite支持的数据量和运行效率都是非常骄人的,因此在海量数据的解决方案中,SQLite可以作为数据预计算的桥头堡,从而显著减少存储在关系型数据库服务器中的数据数量,最终提高系统的查询效率和运行期效率,同时也可以显著的降低数据备份的磁盘开销。

SQLite的主要特征:


    1). 管理简单,甚至可以认为无需管理。

    2). 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。

    3). 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。

    4). 易于维护。

  综上所述,SQLite的主要优势在于灵巧、快速和可靠性高。SQLite的设计者们为了达到这一目标,在功能上作出了很多关键性的取舍,与此同时,也失去了一些对RDBMS关键性功能的支持,如高并发、细粒度访问控制(如行级锁)、丰富的内置函数、存储过程和复杂的SQL语句等。正是因为这些功能的牺牲才换来了简单,而简单又换来了高效性和高可靠性。

SQLite的优势
  

        ①   免配置。和Access一样,只要把数据库文件通过FTP上传到服务器上即可使用,不需要服务器的额外支持。

  ②   备份方便。因为只是一个文件,只要复制一份该文件,就能备份整个数据库。

  ③   虽然是轻量级数据库。但最大能支持2TB 大小的单个库文件。

  ④   速度快。在几百万条记录的情况下,其插入和查询速度与MySQL不分上下,快于SQL Server,10倍于Access(但这并不意味着它可以替代SQL Server)。

SQLite的主要优点


  1. 一致性的文件格式:
  在SQLite的官方文档中是这样解释的,我们不要将SQLite与Oracle或PostgreSQL去比较,而是应该将它看做fopen和fwrite。与我们自定义格式的数据文件相比,SQLite不仅提供了很好的移植性,如大端小端、32/64位等平台相关问题,而且还提供了数据访问的高效性,如基于某些信息建立索引,从而提高访问或排序该类数据的性能,SQLite提供的事务功能,也是在操作普通文件时无法有效保证的。

  2. 在嵌入式或移动设备上的应用:
  由于SQLite在运行时占用的资源较少,而且无需任何管理开销,因此对于PDA、智能手机等移动设备来说,SQLite的优势毋庸置疑。

  3. 内部数据库:
  在有些应用场景中,我们需要为插入到数据库服务器中的数据进行数据过滤或数据清理,以保证最终插入到数据库服务器中的数据有效性。有的时候,数据是否有效,不能通过单一一条记录来进行判断,而是需要和之前一小段时间的历史数据进行特殊的计算,再通过计算的结果判断当前的数据是否合法。在这种应用中,我们可以用SQLite缓冲这部分历史数据。还有一种简单的场景也适用于SQLite,即统计数据的预计算。比如我们正在运行数据实时采集的服务程序,我们可能需要将每10秒的数据汇总后,形成每小时的统计数据,该统计数据可以极大的减少用户查询时的数据量,从而大幅提高前端程序的查询效率。在这种应用中,我们可以将1小时内的采集数据均缓存在SQLite中,在达到整点时,计算缓存数据后清空该数据。

  4. 数据分析:
  可以充分利用SQLite提供SQL特征,完成简单的数据统计分析的功能。这一点是CSV文件无法比拟的。

  5. 产品Demo和测试:
  在需要给客户进行Demo时,可以使用SQLite作为我们的后台数据库,和其他关系型数据库相比,使用SQLite减少了大量的系统部署时间。对于产品的功能性测试而言,SQLite也可以起到相同的作用。

 

二丶实现代码

# python3 连接sqlite3 dbtest.py
import sqlite3

db = r".\test.db"  #pyWork目录下test.db数据库文件
drp_tb_sql = "drop table if exists user"
crt_tb_sql = """
create table if not exists user(
  id integer primary key autoincrement unique not null,
  name varchar(100),
  city varchar(100)
);
"""

#连接数据库
con = sqlite3.connect(db)
cur = con.cursor()

#创建表user

cur.execute(crt_tb_sql)
print("#创建表成功记录成功....")

#插入记录
insert_sql = "insert into user (name,city) values (?,?)"  #?为占位符
cur.execute(insert_sql,('Tom','New York'))
cur.execute(insert_sql,('Frank','Los Angeles'))
cur.execute(insert_sql,('Kate','Chicago'))
cur.execute(insert_sql,('Thomas','Houston'))
cur.execute(insert_sql,('Sam','Philadelphia'))

con.commit()
print("#插入记录成功....")
#查询记录
select_sql = "select * from user"
cur.execute(select_sql)
print("#查询记录成功....")

#返回一个list,list中的对象类型为tuple(元组)
date_set = cur.fetchall()
for row in date_set:
  print(row)

cur.close()
con.close()

 

你可能感兴趣的:(python,开发语言,sqlite3,数据库)