之前我们在很多项目案例中都使用了MySQL数据库。有的同学问:MySQL安装和配置太麻烦了,老是搞不定,有没有更简便的方法?

当然有咯!

Python内置的sqlite3模块就是一个轻量级的数据库,不需要独立的服务器进程。它的数据库就是一个.db后缀的文件,可以跨平台直接访问,非常便捷。简直就是轻量级数据的首选数据库啊!

今天我们就来用Python实战操作一下sqlite3,通过本案例可以完全掌握sqlite3的常用操作。

本文主要内容:

  • 数据读取和插入:包括原始数据的读取、插入数据库。
  • 数据库操作:包括数据的查询、删除、导出等操作,最后上一个自动化导出的案例。

不过,在开始前需要说明的是,虽然Python内置了sqlite3模块,但它只是用来连接数据库的接口。你仍然需要确保电脑上已经有了sqlite3这个数据库软件。

如果你是Mac或者Linux系统,那么恭喜你,你的电脑上默认就装有sqlite3。Windows的同学得手动安装一下。

下载地址:https://www.sqlite.org/download.html

选择 Precompiled Binaries for Windows,下载预编译的二进制 zip 文件:sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip。

在你的电脑上创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。

添加 C:\sqlitePATH 环境变量。安装成功后,在命令提示符下,使用 sqlite3 命令,将会显示如下结果:

C:\>sqlite3SQLite version 3.7.15.2 2013-01-09 11:53:05Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite>

1. 读取数据并插入数据库

本文以TXT文件为例,进行示范操作。TXT文件为单列数据,以换行符分割,文件数量60+,数据总量5万+。

程序设计思路:自动读取每个TXT文件,再依次读取每一行并插入数据库中。

1.1 源代码

# -*- coding: utf-8 -*-

1.2 运行效果

代码运行效果图

1.3 重点代码解释

1)自动获取所有TXT文件名称和路径

了解我的读者都知道,我是比较懒的,我不喜欢指定程序的路径。我写的程序都是自己找路径,自己找文件名称。感兴趣的朋友可以去我的公众号(智能演示)查看这篇文章:获取任意路径下文件名称的2种方法。

2)数据库的创建与连接

conn = sqlite3.connect(path+'\db.db')

path是程序所在路径,也是TXT文件的所在路径。这行代码的意思是:如果数据库已经存在,则连接数据库;如果数据库不存在,则先创建数据库,再连接该数据库。

3)创建表

cur.execute('create table if not exists numbers (id integer primary key ,number varchar(20) NOT NULL)')

在数据库db.db 中创建表numbers,表中包含两个字段:id、number。

注意!一定不要忘了conn.commit()保存一下!不然后面的数据是插不进去的。

4)插入数据

①优化打开方式

with open(file,'r',encoding = 'UTF-8') as f:

建议使用 with 语句来打开TXT文件。这样做的好处是,当对象会在with语句结束时会自动关闭。效率更高!不易出错。

②占位符功能

cur.execute('insert into numbers values(?,?)',(i,line))

(?,?) 起到占位符功能,(i,line))中的值会按位置替换到SQL语句中。

这样就实现了数据的自动插入数据库。需要几分钟时间,请耐心等待。

我们查看下db.db文件属性,可以看到存储了51216条数据的数据库文件大小只有1.13MB,可以说是很轻量的。你可以将这个数据库文件复制到任意一台电脑上,连接上数据库即可进行操作,非常方便。

下面就来说一下sqlite3的常用操作。

2. 数据库操作

2.1 连接数据库

import sqlite3

这样就连接上了刚才的数据库。path+'\db.db'是数据库的路径及文件名,你可以手动输入路径,也可以将.py文件和db.db数据库文件放在同一目录下,系统自动计算路径,这是懒人方法。

2.2 查询数据库中有哪些表

我们似乎不知道db.db这个数据库中有什么,如何才能知道这个数据库中有哪些表呢?

"SELECT name FROM sqlite_master WHERE type='table';")

2.3 删除数据库中的某个表

如果需要删除数据库中的某个表,可以执行以下命令:

cur.execute("drop table tablename;")

2.4 查询某个表的结构

"PRAGMA table_info(numbers)")

2.5 查询表中前50条记录

"SELECT * from numbers limit 0,50;")

2.6 查询表中所有记录

# 5.查询表中所有记录

2.7 查询表中不重复记录

"SELECT distinct number from numbers;")

2.8 将老表中的不重复记录插入新表

# 创建一个新表

2.9 将特定结果写入文本文件(单列)

"SELECT number from numbers_distinct limit 0,10;")

注意:f1.flush()操作很重要!将缓冲区的数据写入文件中,否则文本文件为空白,导致写入失败。

2.10 将特定结果写入文本文件(多列)

"SELECT * from numbers_distinct limit 0,10;")

2.11 将特定结果写入CSV文件(多列)

写入CSV文件和写入文本文件的方法基本相同,只需要将文件后缀改为 '.csv',并将分隔符改为英文状态下逗号即可。

with open(

2.12 办公自动化案例

本文以:将number_distingct表中的数据,以每50个为一组,分别存入一个文本文件为例,演示以下Python结合sqlite3数据库的办公自动化的惊艳效果。

1)源代码

"""源代码已发布到【智能演示】微信公众号,后台回复 sqlite3 可获取下载链接。"""

2)运行效果

导出719个TXT文件,几秒钟就完成了。

3)重点代码解释

这个案例的重点是如何计算出每个TXT文件的名称。

我们可以计算出numbers_distinct表中共有35926条数据。

我们可以构建这样一个函数:filename = str(50*n) + '-' + str(50*n+50) + '.txt',用来计算每个导出的TXT文件名称。

但是最后一个文件的名称不能通过这个方法来构建,需要作以下简单的修改:filename = str(50*n) + '-' + str(b) + '.txt'

计算好每个TXT文件名称后,直接用write函数写入就可以了。

快来动动手试一下吧!

作者:老牛思勉来源:智能演示


node sqlite 插入数据_方便且实用,Python内置的轻量级数据库实操相关推荐

  1. 收藏!Python内置的轻量级数据库竟如此好用!全网最实用sqlite3实战项目。

    前段时间推送了一篇Python操作MySQL数据库的文章:我用 Python 处理3万多条数据,只要几秒钟--,文章发布后反应很好,很多粉丝给我私信,有的朋友说:MySQL安装起来太麻烦了,有没有更简 ...

  2. node sqlite 插入数据_使用 Sequelize 操作 Sqlite3 数据库

    0x01 Sequelize 是什么? Sequelize 是一个基于 Promise 的 Node.js ORM,目前支持 Postgres.MySQL.SQLite 和 Microsoft SQL ...

  3. node sqlite 插入数据_安卓手机中的应用数据都保存在哪些文件中?

    随笔 知识 案例 声音 其他 编者按 手机取证,品牌是一方面,从操作系统入手是另外一个渠道.手机中的重要数据基本上都以轻量数据库的形式保存在本地,也就是经常讲的sqlite db文件中. 从推特上得知 ...

  4. 大学计算机python编程的函数及作用总结_【转】python 内置函数总结(大部分)...

    python 内置函数大讲堂 python全栈开发,内置函数 1.内置函数 python的内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python ...

  5. node sqlite 插入数据_Python基础系列讲解——如何使用自带的SQLite数据库

    当前流行的数据库有Oracle.MySQL.Microsoft SQL Server.PostgreSQL.MongoDB.Redis.Microsoft Access--SQLite(这个是按某报告 ...

  6. python整数转字节数组_【转】Python内置函数(7)——bytearray

    英文文档: class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cla ...

  7. python内置函数可以返回列表元组_十九、python内置函数汇总

    ''' 内置函数 abs():取绝对值 all():每个元素都为真,才是真any():有一个元素为真即为真 bin():十进制转二进制 hex():十进制转十六进制 int():所有的转成十进制 oc ...

  8. python中chr函数的用法_【转】Python内置函数(10)——chr

    英文文档: chr(i) Return the string representing a character whose Unicode code point is the integeri. Fo ...

  9. python done函数_【转】Python内置函数(47)——open

    英文文档: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, ope ...

最新文章

  1. 曾是谷歌程序员,抛下百万年薪创业,4 年成就 7 亿用户,今身价百亿!
  2. 滤波器的主要特性指标
  3. uicontrol图形对象用户界面的用法
  4. mysql对库授权alter_mysql 数据库授权(给某个用户授权某个数据库)
  5. android10位置信息,Android 11 中的位置信息更新
  6. 蓝桥杯 - 翻硬币(贪心)
  7. spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)
  8. consul的安装配置 一centos7环境
  9. 【Elasticsearch】Elasticsearch如何实现 SQL语句中 Group By 和 Limit 的功能
  10. error C2143: 语法错误 : 缺少“;”(在“using”的前面)
  11. 通过DriverManager接口获取连接
  12. Windows 录音机录制电脑声音、route 双网卡设置内外网共用
  13. 精细运营,这只“蚂蚁”开辟了一条全新的财富之路
  14. Python-变分模态分解(VMD)python代码及其测试用例
  15. 查看oracle数据库版本
  16. 联想微型计算机q190怎么拆,联想q190迷你小主机上网怎?
  17. OSChina 周六乱弹 ——致敬默默守护国运的男人们
  18. 飞塔防火墙密码恢复。
  19. vim插入(insert)模式下的快捷键
  20. 用PV操作写出一个不会出现死锁的哲学家进餐问题

热门文章

  1. Oracle查看表空间使用率SQL脚本
  2. 移动设备 计算机设备,移动设备
  3. 简单报价单模板_圣诞节祝福邮件必这样写【附件参考模板BY埃马】
  4. 华为隐藏功能扩大内存代码大全_发现将华为手机这3个功能打开,竟然可以将手机性能极限发挥...
  5. python 函数式_10分钟学习函数式Python
  6. 自定义注解实现权限校验含义_厉害了!老大利用AOP实现自定义注解,半小时完成我三天工作量...
  7. 腾讯云短信发送api(SendSms)--java
  8. java跳出循环break;return;continue使用
  9. Git生成ssh密钥
  10. Android开发笔记(一百二十四)自定义相册