Python学习笔记:sqlite3(sqlite数据库操作)
对于数据库的操作,Python中可以通过下载一些对应的三方插件和对应的数据库来实现数据库的操作,但是这样不免使得Python程序变得更加复杂了。如果只是想要使用数据库,又不想下载一些不必要的插件和辅助软件,可以使用Python内置模块sqlite3。
sqlite3是Python对于sqlite数据库的支持,模块名称之所以是sqlite3而不是sqlite,是因为sqlite的版本中最流行的就是3.x的版本。
sqlite数据库教程:http://www.runoob.com/sqlite/sqlite-intro.html
sqlite GUI软件SQLiteSpy:https://www.yunqa.de/delphi/products/sqlitespy/index,数据库的可视化管理工具有很多,你也可以选择其他的软件,但是SQLiteSpy这个软件免费而且非常小,对于平常的sqlite数据库操作其实已经可以满足了。
常用API(方括号中为可选参数)
- conn = sqlite3.connect(database[, optional_params]):连接(磁盘上的)数据库database,database是一个数据库文件,可以是相对路径,也可以是绝对路径,如果这个文件存在且连接成功则返回一个连接对象;如果文件不存在,则自动创建一个数据库文件。
- csr = conn.cursor([optional_params]):获取去连接对象的游标对象,游标可以理解为存放SQL结果的缓冲区,也可以理解为指向SQL结果的光标。
- csr.execute(sql[, optional_params]):执行SQL语句,返回值也是一个cursor游标对象。SQL语句可以使用问号“?”作为占位符,例如:csr.execute('INSERT INTO STUDENTS VALUES(?, ?, ?)', (1, 'Jason', 18)) ,其中表students有三个字段ID、NAME和AGE。
- csr.executemany(sql, seq_of_parameters):对seq_of_parameters中的所有数据执行同一个sql。例如需要向数据库中插入大量数据时,sql中可以使用占位符,要插入的数据放入seq_of_parameters中。
- conn.commit():提交事务。如果之前对数据库进行了修改,比如插入操作,就需要先commit()。
- conn.close():关闭数据库连接。关闭数据库连接之前,如果对数据库进行了修改,就需要先commit,关闭的时候不会自动commit的,如果没有commit,那么所有的修改都会被丢失。
- csr.fetchone():获取查询结果集中的下一行,返回的是一个表示一行数据的元组,如果没有数据则返回None。
- csr.fetchmany(size):获取查询结果集中的指定大小的下一组数据,默认返回一行数据(不同与fetchone,返回的是列表,而列表中只有一个元组),如果没有数据则返回空列表。
- csr.fetchall():返回查询结果集中的全部数据。
简单示例:
# -*- coding:utf-8 -*-
import sqlite3 # 数据库文件
db = 'sqlite_test.db' # 连接数据库,如果没有则创建数据库
conn = sqlite3.connect(db) # 获取游标
csr = conn.cursor() # 创建表STUDENTS
csr.execute('CREATE TABLE STUDENTS'
'(ID INT PRIMARY KEY NOT NULL,'
'NAME TEXT NOT NULL,'
'AGE INT NOT NULL);') # 插入一条数据
csr.execute('INSERT INTO STUDENTS VALUES(1, "Jason", 18)') # 插入语句sql,并使用占位符
insert_sql = 'INSERT INTO STUDENTS VALUES(?, ?, ?)' # 需要批量插入的数据
students_info = [(2, 'Mickle', 20),
(3, 'Mary', 30),
(4, 'Bob', 40)] # 批量插入数据
csr.executemany(insert_sql, students_info) # 提交事务
conn.commit() # 获取一行数据
# datas = csr.execute('SELECT * FROM STUDENTS;').fetchone() # 获取2行数据
# datas = csr.execute('SELECT * FROM STUDENTS;').fetchmany(2) # 获取全部数据
# datas = csr.execute('SELECT * FROM STUDENTS;').fetchall() # 关闭数据库连接
conn.close()
常用SQL
sqlite的更多知识可以参考笔记开始的sqlite教程。
查询数据库中的表:
SELECT name FROM sqlite_master WHERE type='table';
查询表中的字段信息:
PRAGMA TABLE_INFO([table_name]);
使用分享:
1、SQL中的表名或者字段名带有特殊符号时应该使用嵌套引号括起来,这些特殊符号可能是语法的一部分,应该使用嵌套引号表名它是一个整体,特别是使用格式化字符串时别忘了使用引号嵌套。如包含点号:'SELECT "aa.bb" FROM xxx;'或者'SELECT xxx FROM "%s";' % 'ccc.ddd.eee'
Python学习笔记:sqlite3(sqlite数据库操作)的更多相关文章
- Python学习笔记六:数据库操作
一:Python操作数据库的流程 二:开发环境准备 1:开发工具PyCharm 2:Python操作mysql的工具:需要安装Python-Mysql Connector,网址:https://sou ...
- Python学习笔记21:数据库操作(sqlite3)
Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言. SQLite作为后端数据库,能够搭配Python建站点,或者制作有数据存储需求的工具. SQLite还在其他领域有广泛 ...
- [Python] 学习笔记之MySQL数据库操作
1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...
- python学习笔记(十)完善数据库操作
1.cur = coon.cursor(cursor=pymysql.cursors.DictCursor)的用法 建立游标,指定cursor类型返回的是字典,如果不指定类型,返回的是元组类型数据 i ...
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- python学习笔记(十 二)、操作数据库
每一种语言都少不了多数据库进行各种操作. python支持多种数据库.有关python支持的数据库清单,请参阅:https://wiki.python.org/moin/DatabaseInterfa ...
- Java 学习笔记(16)——Java数据库操作
数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...
- python 学习笔记6(数据库 sqlite)
26. SQLite 轻量级的关系型数据库 SQLite是python自带的数据库,可以搭配python存储数据,开发网站等. 标准库中的 sqlite3 提供该数据库的接口. 1. 基本语法如下 c ...
- Python学习笔记15—mysql的操作
安装 Python-MySQLdb pip install mysql-Python Python对mysql的操作 建立一个实验数据库demo mysql> create database d ...
- python学习笔记(七)操作mysql
python操作mysql数据库需要先安装pymysql模块,在之前博客中可翻看如何安装,最简单的就是pip install pymysql 1.导入pymysql模块 import pymysq ...
随机推荐
- logback配置说明
我觉得对于logback大家不太明白的有:过滤器.logger和root以及其中的一些属性的关系.其他的应该不是多迷糊,所以我就主要说说这几个的关系,并且为了清晰我只说控制台日志,写到文件的日志配置大 ...
- 《Cron表达式详解》
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...
- window系统安装jdk,jre
java开发少不了安装jdk.当然如果只是想运行其他人的java项目,只需要安装jre就行了,不需要安装jdk,jdk是编译用的.jdk可以同时安装多个 版本,只需要在项目部署时注意切换版本选择.在这 ...
- Java—字符串
字符串 在java中,字符串被作为String类型的对象处理.String类位于java.lang包中,默认情况下,该包被自动导入所有的程序. 创建String对象的方法: String s1 = & ...
- WEB渗透测试之三大漏扫神器
通过踩点和查点,已经能确定渗透的目标网站.接下来可以选择使用漏扫工具进行初步的检测,可以极大的提高工作的效率. 功欲善其事必先利其器,下面介绍三款适用于企业级漏洞扫描的软件 1.AWVS AWVS ( ...
- 使用selenium grid分布式执行之一
目前ui框架会做一个更新,把原有的Jenkins分布式方式换成grid方式,换成grid方式有两个好处,1.grid的资源占用比Jenkins的jnlp占用资源少 2.grid可控制不同浏览器同时跑 ...
- 2018.7.27 Json与Java相互转换
Json.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- IIS 处理程序“PageHandlerFactory-Integrated”
出现这种错误是因为先安装了.net framework 4.0然后才安装了iis,此种情况下iis默认只支持.net framewrok 2.0,要解决此问题,需要在iis中注册.net framew ...
- js 实现序列号效果实现
前端的朋友可能遇到过这样的需求,要求在页面输入一串序列号,或激活码(就像在PC正版软件中的序列号),可是HTML中并没有为我们提供类似的组件,我们来自己实现一个: 大体的思路是在表单里有一个隐藏的in ...
- JS无限添加HTML到指定位置
用JS把HTML添加到指定位置有两种写法,一种是用字符串,一种是用javascript中的方法 第一种: 用字符串写 <h2>利用JS无限添加一个相同部分</h2> <h ...