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集合用法实例分析
May 30 Python
Python的pycurl包用法简介
Nov 13 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
python清理子进程机制剖析
Nov 23 Python
python 执行shell命令并将结果保存的实例
May 11 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
django-rest-swagger的优化使用方法
Aug 29 Python
python爬虫之遍历单个域名
Nov 20 Python
Python configparser模块常用方法解析
May 22 Python
pycharm 复制代码出现空格的解决方式
Jan 15 Python
Python基础之字符串格式化详解
Apr 21 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
PHP的FTP学习(三)
2006/10/09 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
在python里面运用多继承方法详解
2019/07/01 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
优秀毕业生推荐信
2013/11/02 职场文书
高中政治教学反思
2014/01/18 职场文书
标准自荐信范文
2014/01/29 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
药学职务聘任书
2014/03/29 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
四年级作文之植物
2019/09/20 职场文书
MySQL中的隐藏列的具体查看
2021/09/04 MySQL