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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python自动重试HTTP连接装饰器
Apr 28 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
Python断言assert的用法代码解析
Feb 03 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
python实现停车管理系统
Nov 30 Python
django与小程序实现登录验证功能的示例代码
Feb 19 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
解决python3 安装不了PIL的问题
Aug 16 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
详解python的变量缓存机制
Jan 24 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
php导出excel格式数据问题
2014/03/11 PHP
js 深拷贝函数
2008/12/04 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
js正则相关知识点专题
2018/05/10 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
竞选演讲稿范文
2013/12/28 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
银行求职自荐信
2014/06/30 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
毕业生个人总结
2015/02/28 职场文书