SQLite的Python编程

0、 引言

Python提供了基于sqlite3的模块,在Python2.7.3版本中已经默认的安装了。这里我们只需要使用即可
为何要使用Python中调用sqlite模块呢?这是因为Python是一门很优秀的脚本语言(这有点侮辱python啊,但是确实Python可以作为脚本语言完成很多的任务),可以让我们能够更高效的完成一些数据库的任务。

1、 利用sqlite3进行Python的编程操作

上一章节我们用sqlite提供的命令通过命令行的方式对数据库进行了操作,这里我们将使用python的API接口来实现对数据库的创建,查找,删除等操作

1.1 数据库的链接

对数据库进行操作,首先需要做到能够连接到数据库上,如下所示;

import sqlite3
conn = sqlite3.connect('C:\\sqlite\\test\\testDB.db')

这里需要首先import sqlite3模块,否则的话是查找不到相应的命令的
其次,对于windows环境下,我们的全路径要加上两个‘\’号,第一个是转义符,这里不再详细说明
再次,如果testDB.db不存在的话,程序在连接前会将其创建
对数据库连接上了以后,那么就可以做相应的其他的操作了。

1.2 创建数据库表

cur = conn.cursor()
createSQL = 'create table tbl_Device (ID INT PRIMARY KEY NOT NULL,\ DEVNAME TEXT NOT NULL,\ USERID INT NOT NULL)' cur.execute(createSQL) conn.commit()

第一条语句是获取数据库的游标,第三条语句是执行数据库,最后一条语句是提交修改,不提交的话,实际上数据库并不会将语句执行。第二句就是创表的语句,我们发现其实和上一章的命令是一致的。

1.3 插入数据

创建了表后,如果没有数据的话,那么实际是没用的,下面我们就给表插入数据

insertSQL1 = 'insert into tbl_Device values (1,"NE=1",1)' insertSQL2 = 'insert into tbl_Device values (2,"NE=2",1)' cur.execute(insertSQL1) cur.execute(insertSQL2)

1.4 查找数据

插入数据后,我们可以利用select命令查看插入的数据是否存在

selectSQL = 'select * from tbl_Device'
cur.execute(selectSQL)
name=[f[0] for f in cur.description]
for row in cur.fetchall():
    for pair in zip(name,row):
        print pair

最终会显示如下的结果:

('ID',1)
('DEVNAME',u'NE=1')
('USERID',1)
('ID',2)
('DEVNAME',u'NE=2')
('USERID',1)

1.5 更新数据

同样的,可以用update命令来更新数据

updateSQL = 'update tbl_Device set DEVNAME=''NE=3 where ID=1' cur.execute(selectSQL)

1.6 其他

对于所有的sql命令,都可以利用上面的方式进行执行语句,包括delete命令,drop命令等等,他们的行为都是一致的,这里就不再详细解读。

1.7 关闭连接

当我们执行完了所有的数据库命令,我们一般要做下面的步骤

conn.commit() conn.close()

事物提交以及关闭数据库连接

2、基础的API接口

上面总结了sqlite在Python中的实际应用,下面我们就来详细分析一下sqlite的数据库API接口

2.1 连接数据库的接口

sqlite3.connect(database [,timeout,other optional arguments])

2.2 获取游标的接口

connection.cursor([cursorClass])

2.3 执行语句的接口

cursor.execute(sql [,optional parameters])
connection.execute(sql [,optional parameters])

2.4 执行脚本

cursor.executescript(sql_script)

2.5 提交当前的事物

connection.commit()

2.6 回滚

connection.rollback()

2.7 关闭数据库连接

connection.close()

2.8 读取下一行结果

cursor.fetchone()

2.8 读取所有剩余结果

cursor.fetchall()

基本上常见的接口就是这些了,更详细的信息可以参见这里

3 关于查找的输出显示

在上面我们使用了游标的方式执行select语句,然后将其构造成zip的格式,然后用fetchall的方式将其打印出来
这里我们直接使用游标来打印出结果,如下所示

conn1=sqlite3.connect('C:\\sqlite\\test\\testDB.db')
createSQL1 = 'create table tbl_User (ID INT PRIMARY KEY NOT NULL,\ NAME TEXT NOT NULL,\ AGE INT NOT NULL,\ sex TEXT)' conn1.execute(createSQL1) insertSQL3 = 'insert into tbl_User values (1,"ahmed",30,"male")' insertSQL4 = 'insert into tbl_User values (2,"Bob",28,"male")' insertSQL5 = 'insert into tbl_User values (3,"cristina",18,"female")' conn1.execute(insertSQL3) conn1.execute(insertSQL4) conn1.execute(insertSQL5) conn1.commit() selectSQL1 = 'select * from tbl_User' cur = conn1.execute(selectSQL1) for row in cur: print "ID = ",row[0] print "NAME = ",row[1] print "AGE = ",row[2] print "SEX = ",row[3] conn1.close()

这里游标直接指向了执行后的结果数据,然后直接读取游标指向的结果。
具体的输出格式如下所示:

ID = 1
NAME = ahmed
AGE = 30
SEX = male
ID = 2
NAME = Bob
AGE = 28
SEX = male
ID = 3
NAME = cristina
AGE = 18
SEX = female

殊途同归,都可以将信息打印出来

4、执行sql脚本

现实中,我们不会在python脚本里写create或者insert这种语句,这样的编程是很凌乱的。实际操作中一般都是在sql脚本中编写需要执行的sql语句,然后在python脚本中调用并且执行sql脚本

python脚本文件

import sqlite3

conn = sqlite3.connect('testDB.db')

cursor = conn.cursor()

f = open(r"test.sql")

cursor.executescript(f.read())

conn.commit()

conn.close()

sql脚本文件:

create table tbl_User (ID INTEGER PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INTEGER NOT NULL,sex TEXT);
insert into tbl_User values (1,"male");
insert into tbl_User values (2,"male");
insert into tbl_User values (3,"female");

执行结果查询:

D:\eclipseWorkspace\PythonLearning\src>sqlite3 testDB.db
SQLite version 3.19.2 2017-05-25 16:50:27
Enter ".help" for usage hints.
sqlite> .table
COMPANY   tbl_User
sqlite> select * from tbl_User;
1|ahmed|30|male
2|Bob|28|male
3|cristina|18|female

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


SQLite架构简单,又有Json计算能力,有时会承担Json文件/RESTful的计算功能,但SQLite不能直接解析Json文件/RESTful,需要用Java代码硬写,或借助第三方类库,最后再拼成insert语句插入数据表,代码非常繁琐,这里就不展示了。参考前面的代码可知,入库的过程比较麻烦,不能只用SQL,还要借助Java或命令行。SPL是现代的数据计算语言,属于简化的面向对象的语言风格,有对象的概念,可以用点号访问属性并进行多步骤计算,但没有继承重载这些内容,不算彻底的面向对象语言。...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。本教程将告诉您如何使用 SQLite 编程,并让你迅速上手。.................................
安卓开发,利用SQLite实现登陆注册功能
相比大多数数据库而言,具有等优势,广泛应用于、等领域。
有时候,一个项目只有一个数据库,比如只有SQLite,或者MySQL数据库,那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了,有多个用户使用,但是多个用户使用不同的数据库,这个时候,我们就需要把软件设计成可以连接多个数据库的模式,用什么数据库,就配置什么数据库即可。4.Users实体类,这个实体类要和数据库一样的,形成一一对应的关系。11.Sqlite数据库,需要在代码里面创建数据库,建立表,再建立数据。8.我们开启MySQL数据库,然后进行调试,看程序的结果。2.安装SqlSugar。
基于Android的背单词软件,功能强大完整。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。说白了就是使用起来轻便简单,
Android的简单购物车案例
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库...
Qt设计较为美观好看的登录注册界面(包含SQLite数据库以及TCP通信的应用)
SQLite是用C语言开发的跨平台小型数据库,可嵌入其他开发语言,也可在单机执行。SPL是用Java开发的跨平台的数据计算语言,可嵌入Java,可在单机执行,可以数据计算服务的形式被远程调用。两者的代码都是解释执行的。...
新建库.openDATA_BASE;新建表createtableLIST_NAME(DATA);语法:NAME关键字...<用逗号分割>删除表droptableNAME;查看表.schema查看表信息新建数据insertintoLIST_NAMEvalues();语法:CLASS,PARAMETER...,CLASS是类别,PARAMETER是参数<用逗号分割新建的
importsqlite3classDemo01:def__init__(self):self.conn=sqlite3.connect("sql_demo_001.db")self.cursor1=self.conn.cursor()self.cursor1.execute("select*fromtable_001wherename=?andid=?",('ssss&#0
 在客户端配置文件<configuration>节点下,添加:<connectionStrings>      <add name="localdb" connectionString="Data Source=config/local.db;Version=3;UseUTF16Encoding=True;" providerName="System.Data.SQLite.SQLiteFactory"/&g
提到锁就不得不说到死锁的问题,而SQLite也可能出现死锁。下面举个例子:连接1:BEGIN(UNLOCKED)连接1:SELECT...(SHARED)连接1:INSERT...(RESERVED)连接2:BEGIN(UNLOCKED)连接2:SELECT...(SHARED)连接1:COMMIT(PENDING,尝试获取EXCLUSIVE锁,但还有SHARED锁未释放,返回SQLITE_BUSY)连接2:INSERT...
SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。在使用SQLite前,我们先要搞清楚几个概念:表
设计思想————首先要确定有几个页面、和每个页面的大致布局由于是入门,我也是学习了不是很长的时间,所以项目比较low。。。。第一个页面,也就是打开APP的首页面:今天这个博客,先实现添加功能!:首先对主界面进行布局:其中activity_main.xml的代码为<?xmlversion="1.0"encoding="