Python中内置数据库!SQLite使用指南! ⛵
作者:韩信子@ShowMeAI
Python3◉技能提升系列:https://www.showmeai.tech/tutorials/56
本文地址:https://www.showmeai.tech/article-detail/390
声明:版权所有,转载请联系平台与作者并注明出处
收藏ShowMeAI查看更多精彩内容
Python 是一个广泛使用的编程语言,在各个领域都能发挥很大的作用,而且安装 Python 环境的同时,我们也安装了很多其他出色的工具,其中当然少不了数据库。
Python 内置了 SQLite3,在 Python 中使用 SQLite,不需要安装任何东西,可以直接使用。我们只需要导入内置 Python 库sqlite3
就可以开始使用这个数据库啦!
在本篇内容中,ShowMeAI将带大家一起来了解,如何基于 Python 环境连接到数据库、创建表、插入数据,查询数据,以及与 Pandas 工具库搭配使用。
对于 SQL 更详尽的内容,欢迎大家查阅ShowMeAI制作的速查表:
连接数据库
要使用数据库,我们需要先连接数据库。在 Python 中很简单,我们只需导入sqlite3
工具库并使用.connect
函数,函数的参数是数据库名称,在本例中为students.db
。
# 导入工具库
import sqlite3
# 建立连接
conn = sqlite3.connect('students.db')
我们第1次运行上面代码的话,会在工作目录中创建一个名为“students.db”的新文件。
创建表
接下来我们可以在连接的数据库中创建一个表,并将数据插入其中。
在创建表之前,我们需要创建一个游标 cursor(用于建立连接以执行 SQL 查询的对象),我们将使用它来创建表、插入数据等。具体的操作如下代码:
c = conn.cursor()
完成游标创建后,我们可以使用 .execute
方法执行SQL语句,在我们的数据库中创建一个新表。在引号内,我们编写了建表 SQL 语句,使用CREATE TABLE
语句:
c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
我们在创建表的字段时,需要定义数据类型。SQLite 只有 5 种数据类型:
Null
:缺失值INTEGER
:没有小数点的数字(例如,1、2、3、4)REAL
:带小数点的数字(例如,6.2、7.6、11.2)TEXT
:任何字符数据Blob
:二进制数据的集合,作为值存储在数据库中。它允许我们在数据库中存储文档、图像和其他多媒体文件。
我们要提交上述语句,并关闭连接。截止目前的完整代码如下:
# 导入工具库
import sqlite3
# 创建连接
conn = sqlite3.connect('students.db')
# 游标
c = conn.cursor()
# 建表语句
c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
# 执行
conn.commit()
# 关闭连接
conn.close()
插入数据
我们可以使用.execute
执行INSERT INTO
语句在“students”表中插入一行数据。下面是添加一个20 岁,身高 1.9 米的学生mark
的代码:
c.execute("INSERT INTO students VALUES ('mark', 20, 1.9)")
我们也可以一次插入多行,换成.executemany
方法即可。不过注意一下,我们在INSERT
语句中会使用?
作为占位符。代码如下所示:
all_students = [
('john', 21, 1.8),
('david', 35, 1.7),
('michael', 19, 1.83),
]
c.executemany("INSERT INTO students VALUES (?, ?, ?)", all_students)
查询数据
我们可以使用SELECT
语句查看我们的数据,注意一下如果要获取数据并输出,需要执行.fetchall
方法:
c.execute("SELECT * FROM students")
print(c.fetchall())
打印的输出如下:
[(‘mark’, 20, 1.9), (‘john’, 21, 1.8), (‘david’, 35, 1.7), (‘michael’, 19, 1.83)]
当然,大家其实可以配合一些在线工具来完成数据的直观查询,例如 SQLiteViewer。我们只需拖动前面 Python 代码生成的 .db
数据库文件进去,即可查看其内容。
截止目前为止的所有代码如下
# 导入工具库
import sqlite3
# 创建连接
conn = sqlite3.connect('students.db')
# 游标
c = conn.cursor()
# 建表语句
c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
# 插入单条数据
c.execute("INSERT INTO students VALUES ('mark', 20, 1.9)")
# 插入多条数据
all_students = [
('john', 21, 1.8),
('david', 35, 1.7),
('michael', 19, 1.83),
]
c.executemany("INSERT INTO students VALUES (?, ?, ?)", all_students)
# 查询数据
c.execute("SELECT * FROM students")
print(c.fetchall())
# 执行
conn.commit()
# 关闭连接
conn.close()
其实大家在SQL中的更高级的复杂查询,都可以通过上述方式进行查询和交互
SQLite 配合 Pandas 应用
SQLite 可以与 Pandas 中的Dataframe搭配使用。
例如,我们有一个名为population_total.csv
的 csv 文件,大家可以通过 ShowMeAI 的百度网盘地址下载。
实战数据集下载(百度网盘):公✦众✦号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [61]Python内置数据库SQLite使用指南 『SQLite示例数据集』
ShowMeAI官方GitHub:https://github.com/ShowMeAI-Hub
我们可以方便地使用 Pandas 读取它:
import pandas as pd
df = pd.read_csv("population_total.csv")
Dataframe 内容如下所示:
>>> df country year population0 China 2020.0 1.439324e+09
1 China 2019.0 1.433784e+09
2 China 2018.0 1.427648e+09
3 China 2017.0 1.421022e+09
4 China 2016.0 1.414049e+09
... ... ... ...
4180 United States 1965.0 1.997337e+08
4181 United States 1960.0 1.867206e+08
4182 United States 1955.0 1.716853e+08
4183 India 1960.0 4.505477e+08
4184 India 1955.0 4.098806e+08
我们可以把 pandas Dataframe 形态的数据一次性导入 SQLite 数据库中,这里我们需要借助 sqlalchemy 工具库(可以通过pip install sqlalchemy
轻松安装)
from sqlalchemy import create_engine
engine = create_engine('sqlite://', echo=False)
下面我们就可以轻松把数据导入数据库并创建 population 表:
df.to_sql("population", con=engine)
查询数据表的语句如下:
engine.execute("SELECT * FROM population").fetchall()
如果你想创建表的同时生成一个 sqlite 文件(前面的操作,生成的是内存数据库),可以如下方式操作。(我们创建了一个mydb.db
文件作为数据库的实体文件)。
from sqlalchemy import create_engine
engine = create_engine("sqlite:///mydb.db")
df.to_sql("population", engine)
这个mydb.db
就和前面的使用方式一样啦,我们也可以使用 SQLite 查看器查看数据内容。
总结
以上就是ShowMeAI带大家简单了解python的内置数据库SQLite的使用方法,我们可以很方便地完成建表、插入数据、查询数据,也可以配合pandas进行灵活使用,大家快快用起来吧!
参考资料
- 编程语言速查表 | SQL 速查表:https://www.showmeai.tech/article-detail/99
- SQLiteViewer:https://inloop.github.io/sqlite-viewer/
推荐阅读
- 数据分析实战系列 :https://www.showmeai.tech/tutorials/40
- 机器学习数据分析实战系列:https://www.showmeai.tech/tutorials/41
- 深度学习数据分析实战系列:https://www.showmeai.tech/tutorials/42
- TensorFlow数据分析实战系列:https://www.showmeai.tech/tutorials/43
- PyTorch数据分析实战系列:https://www.showmeai.tech/tutorials/44
- NLP实战数据分析实战系列:https://www.showmeai.tech/tutorials/45
- CV实战数据分析实战系列:https://www.showmeai.tech/tutorials/46
- AI 面试题库系列:https://www.showmeai.tech/tutorials/48
Python中内置数据库!SQLite使用指南! ⛵的更多相关文章
- 详解Python中内置的NotImplemented类型的用法
它是什么? ? 1 2 >>> type(NotImplemented) <type 'NotImplementedType'> NotImplemented 是Pyth ...
- Python中内置函数
python提供了很多的内置函数,这些内置的函数在某些情况下,可以起到很大的作用,而不需要专门去 写函数实现XX功能,直接使用内置函数就可以实现,下面分别来学习内置函数的使用和案例代码. abs(), ...
- Python中内置函数的介绍
内置函数的功能介绍 常用内置函数如下: 1.abs() 绝对值 格式:abs(x) 例如:print(abs(-18)) >>> 18 返回值:number #该函数主要用于数值类的 ...
- Python中内置的日志模块logging用法详解
logging模块简介 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/P ...
- 第8.9节 Python类中内置的查看直接父类的__bases__属性
终于介绍完了__init__方法和__new__方法,接下来轻松一下,本节介绍类中内置的__bases__属性. 一. 语法释义 Python 为所有类都提供了一个 bases 属性,通过该属性可以查 ...
- Python学习笔记 使用数据库SQlite Mysql
SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用当中, 甚至在IOS和Android的APP中都可以集成 Python就内 ...
- Python 的内置字符串方法(收藏专用)
Python 的内置字符串方法(收藏专用) method 字符串 string python3.x python 4.7k 次阅读 · 读完需要 44 分钟 5 字符串处理是非常常用的技能,但 ...
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
随机推荐
- 服务器设置X-Frame-Options Header响应头(Tomcat,服务器,项目)
解决方案(修改tomcat配置文件) 打开Tomcat配置文件(conf\web.xml)搜索 httpHeaderSecurity有两处地方 <!--第一处将注释放开--> <fi ...
- PAT (Basic Level) Practice 1002 写出这个数 分数 20
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10100. 输出格式: 在一行内输出 ...
- pgsql 的问题
pgsql 怎么插入inet类型的数据?insert into table (remote_addr) values ( ?::INET); pgsql如何截取时间的精度 select create ...
- SpringBoot(三) - Slf4j+logback 日志,异步请求,定时任务
1.Slf4j+logback 日志 SpringBoot框架的默认日志实现:slf4j + logback: 默认日志级别:info,对应了实际生产环境日志级别: 1.1 日志级别 # 常见的日志框 ...
- Spring使用注解开发及使用java类进行配置bean
Spring使用注解开发 说明 在spring4之后,想要使用注解形式,必须得要引入aop的包 在配置文件当中,还得要引入一个context约束 <?xml version="1.0& ...
- PHP微信支付功能
百度网盘:http://pan.baidu.com/s/1sl5GeVr l5ud 先下载一份sdk ,引入到自己的项目中,我用的是TP5,配置好namespace 然后在项目中引入: 之后,在去配 ...
- 1.轮询、长轮询、websocket简介
一.轮询 前端每隔固定时间向后台发送一次请求,询问服务器是否有新数据 缺点: 延迟,需要固定的轮询时间,不一定是实时数据 大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候 并没有新的数 ...
- 2流高手速成记(之七):基于Dubbo&Nacos的微服务简要实现
本节内容会用到之前给大家讲过的这两篇: 2流高手速成记(之六):从SpringBoot到SpringCloudAlibaba 2流高手速成记(之三):SpringBoot整合mybatis/mybat ...
- 京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用
摘要 随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要.同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学 ...
- 用 VS Code 搞 Qt6:让信号和槽自动建立连接
Qt 具备让某个对象的信号与符合要求的槽函数自动建立连接.弄起来也很简单,只要调用这个静态方法即可: QMetaObject::connectSlotsByName(...); connectSlot ...