Python SQLite3简介


Posted in Python onFebruary 22, 2018

最近需要用Python写一个简易通讯录,但是对于数据存储很发愁。大家都知道,使用 Python 中的列表和字典进行存储数据是很不靠谱的,所以就想到Python有没有内置的数据库模块。

SQLite3简介

SQLite3 可使用 sqlite3 模块与 Python 进行集成。sqlite3 模块是由 Gerhard Haring 编写的。它提供了一个与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。您不需要单独安装该模块,因为 Python 2.5.x 以上版本默认自带了该模块。
为了使用 sqlite3 模块,您首先必须创建一个表示数据库的连接对象,然后您可以有选择地创建光标对象,这将帮助您执行所有的 SQL 语句。

怎么样,听起来不错吧!那就快来学习使用吧。

连接数据库

下面的 Python 代码显示了如何连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。

#-*- coding:utf-8 -*-
import sqlite3
conn = sqlite3.connect('mysql_person.db')

print "Opened database successfully";

在这里,您也可以把数据库名称复制为特定的名称 :memory:,这样就会在 RAM 中创建一个数据库。现在,让我们来运行上面的程序,在当前目录中创建我们的数据库 mysql_person.db。您可以根据需要改变路径。保存上面代码到 sqlite.py 文件中,并按如下所示执行。如果数据库成功创建,那么会显示下面所示的消息:

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

创建表

下面的 Python 代码段将用于在先前创建的数据库中创建一个表:

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

import sqlite3

conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";

conn.execute('''CREATE TABLE MT
    (ID INT PRIMARY KEY   NOT NULL,
    NAME      TEXT  NOT NULL,
    AGE      INT   NOT NULL,
    ADDRESS    CHAR(50),
    SALARY     REAL);''')
print "Table created successfully";

conn.close()

上述程序执行时,它会在 test.db 中创建 MT 表,并显示下面所示的消息:

Opened database successfully
Table created successfully

INSERT 操作

下面的 Python 程序显示了如何在上面创建的 MT 表中创建记录:

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

import sqlite3

conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (1, 'Paul', 32, 'California', 20000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

上述程序执行时,它会在 MT 表中创建给定记录,并会显示以下两行:

Opened database successfully
Records created successfully

SELECT 操作

下面的 Python 程序显示了如何从前面创建的 MT 表中获取并显示记录:

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

import sqlite3

conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";

cursor = conn.execute("SELECT id, name, address, salary from MT")
for row in cursor:
  print "ID = ", row[0]
  print "NAME = ", row[1]
  print "ADDRESS = ", row[2]
  print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

上述程序执行时,它会产生以下结果:

Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully

UPDATE 操作

下面的 Python 代码显示了如何使用 UPDATE 语句来更新任何记录,然后从 COMPANY 表中获取并显示更新的记录:

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

import sqlite3

conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";

conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit()
print "Total number of rows updated :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary from MT")
for row in cursor:
  print "ID = ", row[0]
  print "NAME = ", row[1]
  print "ADDRESS = ", row[2]
  print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

上述程序执行时,它会产生以下结果:

Opened database successfully
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000.0

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully

DELETE 操作

下面的 Python 代码显示了如何使用 DELETE 语句删除任何记录,然后从 COMPANY 表中获取并显示剩余的记录:

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

import sqlite3

conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";

conn.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary from MT")
for row in cursor:
 print "ID = ", row[0]
 print "NAME = ", row[1]
 print "ADDRESS = ", row[2]
 print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

上述程序执行时,它会产生以下结果:

Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现爬虫下载漫画示例
Feb 16 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
python SVD压缩图像的实现代码
Nov 05 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
python在协程中增加任务实例操作
Feb 28 Python
python中pandas对多列进行分组统计的实现
Jun 18 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 #Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 #Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 #Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 #Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 #Python
基于Django用户认证系统详解
Feb 21 #Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 #Python
You might like
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP正则验证Email的方法
2015/06/15 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
JS前端加密算法示例
2016/12/22 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python CSV模块使用实例
2015/04/09 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
可贵的沉默教学反思
2014/02/06 职场文书
优秀学生获奖感言
2014/02/15 职场文书
机关节能减排实施方案
2014/03/17 职场文书
党支部特色活动方案
2014/08/20 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
python Tkinter的简单入门教程
2021/04/11 Python