python sqlite数据库_用Python进行SQLite数据库操作

简单的介绍

SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

安装与使用

1.导入Python SQLITE数据库模块

Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~

import sqlite3

2. 创建/打开数据库

在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开。

cx = sqlite3.connect("E:/test.db")

也可以创建数据库在内存中。

con = sqlite3.connect(":memory:")

3.数据库连接对象

打开数据库时返回的对象cx就是一个数据库连接对象,它可以有以下操作:

commit()--事务提交

rollback()--事务回滚

close()--关闭一个数据库连接

cursor()--创建一个游标

关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。

4.使用游标查询数据库

我们需要使用游标对象SQL语句查询数据库,获得查询对象。 通过以下方法来定义一个游标。

cu=cx.cursor()

游标对象有以下的操作:execute()--执行sql语句

executemany--执行多条sql语句

close()--关闭游标

fetchone()--从结果中取一条记录,并将游标指向下一条记录

fetchmany()--从结果中取多条记录

fetchall()--从结果中取出所有记录

scroll()--游标滚动

1. 建表

cu.execute("create table catalog (id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)")

上面语句创建了一个叫catalog的表,它有一个主键id,一个pid,和一个name,name是不可以重复的,以及一个nickname默认为NULL。

2. 插入数据

请注意避免以下写法:

# Never do this -- insecure 会导致注入攻击

pid=200

c.execute("... where pid = '%s'" % pid)

正确的做法如下,如果t只是单个数值,也要采用t=(n,)的形式,因为元组是不可变的。

for t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:

cx.execute("insert into catalog values (?,?,?,?)", t)

简单的插入两行数据,不过需要提醒的是,只有提交了之后,才能生效.我们使用数据库连接对象cx来进行提交commit和回滚rollback操作.

cx.commit()

3.查询

cu.execute("select * from catalog")

要提取查询到的数据,使用游标的fetch函数,如:

In [10]: cu.fetchall()

Out[10]: [(0, 10, u'abc', u'Yu'), (1, 20, u'cba', u'Xu')]

如果我们使用cu.fetchone(),则首先返回列表中的第一项,再次使用,则返回第二项,依次下去.

4.修改

In [12]: cu.execute("update catalog set name='Boy' where id = 0")

In [13]: cx.commit()

注意,修改数据以后提交

5.删除

cu.execute("delete from catalog where id = 1")

cx.commit()

6.使用中文

请先确定你的IDE或者系统默认编码是utf-8,并且在中文前加上u

x=u'鱼'

cu.execute("update catalog set name=? where id = 0",x)

cu.execute("select * from catalog")

cu.fetchall()

[(0, 10, u'\u9c7c', u'Yu'), (1, 20, u'cba', u'Xu')]

如果要显示出中文字体,那需要依次打印出每个字符串

In [26]: for item in cu.fetchall():

....:     for element in item:

....:         print element,

....:     print

....:

0 10 鱼 Yu

1 20 cba Xu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dijstra算法

无向图、赋权有向图 的最短路径转载于:https://www.cnblogs.com/xiaoxuesheng993/p/9632555.html

北林计算机考研真题答案,真题解析|『北林』2020年考研初试真题

原标题:真题解析|『北林』2020年考研初试真题真题解析|『北林』2020年考研初试真题前言从今年的考试题型来看未做改变,(选择、名词解释、简答、论述)但分数分布略有更改。从考试内容来看,基本持平于去年的难易程度&…

安卓APP_ 控件(8)—— AlertDialog

摘自:安卓APP_ 控件(8)—— AlertDialog 作者:丶PURSUING 发布时间: 2021-04-02 18:13:20 网址:https://blog.csdn.net/weixin_44742824/article/details/115400659 显示对话框,效果如下图&…

iBatis 到 MyBatis区别

简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区别,以及从 iBatis 向 MyBatis 移植时需要注意的地方。通过对本文的学习,读者基本能够了解 MyBatis 有哪些方面的改进,并能够顺利使用 MyBatis 进行开发。本文更适合有 iBat…

python开源库生成式对抗网络_Python:使用Tensorflow开发一维生成对抗网络

生成式对抗网络是一种用于训练生成器模型的深度学习体系结构。GAN由两个模型组成,一个称为生成器(Generator),另一个称为判别器(Discriminator)。顾名思义,生成器生成新样本,判别器负责对生成的样本进行真伪分类。GAN实际如何运作…

Java执行存储过程

1、JDBC调用存储过程: CallableStatement /** *p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替 *其余地方写法固定 */ CallableStatement cstmt conn.prepareCall("{call p(?,?,?,?)}"); /** *告诉JDBC&…

2014 计算机网络 考研真题,2014计算机网络考研试题过关必练

2009全国硕士研究生入学考试过关必练_网络试题一. 通过选择题过关必练1. 常用的数据传输速率单位有Kbps、Mbps、Gbps与Tbps,1Mbps等于A. 1103bps B. 1106bps C. 1109bps D. 11012bps2. 常用的数据传输速率单位有Kbps、Mbps、Gbps,如果局域网的…

安卓APP_ 控件(9)—— PopupWindow弹窗

摘自:安卓APP_ 控件(9)—— PopupWindow弹窗 作者:丶PURSUING 发布时间: 2021-04-05 14:41:35 网址:https://blog.csdn.net/weixin_44742824/article/details/115405555 实现效果如下: 点击触发…

mysql5.6主从参数详解

mysql5.6的主从相当的不错,增加了不少参数,提升了主从同步的安全和效率,以下是mysql5.6主从参数详解。######################################### server_id 2 #binlog log-bin /data1/mysql/binlog/binlog binlog_format ROW binlog-row…

3D 立体 backface-visibility

<!DOCTYPE html> <html><head><!--backface-visibility属性用来设置&#xff0c;是否显示元素的背面&#xff0c;默认是显示的backface-visibility:keyword;keyword有两个值&#xff0c;hidden和visible&#xff0c;默认是是visible所以是在每个元素里面设…

计算机网址登录教程,melogincn电脑登录教程

请问melogincn使用电脑登录设置的教程&#xff1f;在电脑上怎么登陆水星(美科星)无线路由器的后台&#xff0c;通过melogincn&#xff0c;试了下发现不知道如何打开&#xff0c;求分享用melogincn用电脑登录设置的教程。使用环境描述&#xff1a;melogincn实际上应该是melogin.…

从外网给新建的Exchange 2007/2010分发通讯组发邮件失败

前几天部署Exchange2010时建立了几个通讯组邮箱&#xff0c;测试下来发现只有exchange内部组员进行邮件交流没有问题&#xff0c;外网发送到组邮箱时会收到#550 5.7.1 RESOLVER.RST.AuthRequired; authentication required ##的错误&#xff0c;当时没有找出问题原因&#xff0…

Qt 中事件与处理

一、事件与处理 程序在运算过程中发生的一些事情&#xff1a;鼠标单击、键盘的按下... 这些的事件的监控与处理在Qt中不是以信号的方式处理的。 当这些事件发生时会调用QObject类中的功能函数&#xff08;虚函数&#xff09;&#xff0c;所有的控件类都继承了这个类。 常用的鼠…

安卓APP_ 布局(1)—— LinearLayout

摘自&#xff1a;安卓APP_ 布局&#xff08;1&#xff09;—— LinearLayout 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 16:46:22 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115442240 LinearLatout 一、orientation&#xf…

鼠标点击测试_鼠标键盘如何检测故障,这边教您简单的测试

沉迷&#xff0c;教您简单的测试鼠标故障。有线键盘和鼠标的检测步骤&#xff1a;(1)将电脑关机&#xff0c;拔插对应的连接线。(2)移除所有除了键盘和鼠标之外的设备&#xff0c;然后重启电脑。(3)重启后&#xff0c;观察鼠标的灯是否有亮。点击滚动锁定键&#xff0c;观察键盘…

影响计算机的速度有哪些,影响电脑速度的硬件有哪些

影响电脑速度的硬件有哪些?影响最直接的是cpu、内存条、硬盘。其次是主板、显卡。一、处理器cpucpu是电脑的大脑&#xff0c;是运算核心和控制核心&#xff0c;它的主要作用是处理指令和数据&#xff0c;电脑所有的硬件工作分工都市cpu分配和协调的。所以&#xff0c;cpu的层次…

自学笔记:计时器Chronometer

public class MainActivity extends Activity implements OnClickListener {/*** 待完善*/private Chronometer chronometer null;private long temp;private boolean isrestart;Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceSta…

atom编写python程序_编写我们的第一个Python程序,print.py

Python安装后&#xff0c;默认会安装很多功能模块&#xff0c;方便开发应用程序时调用&#xff0c;需要增加默认功能模块以外的模块时&#xff0c;使用的是PIP 这个工具&#xff0c;把需要模块安装到C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\Lib\sit…

安卓APP_ 布局(2) —— RelativeLayout相对布局

摘自&#xff1a;安卓APP_ 布局&#xff08;2) —— RelativeLayout相对布局 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 20:19:54 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115445242 RelativeLayout 一、根据父容器定位二、…

mutli-lane情况

PCIE3.0支持x1,x2,x4,x8,x16,x32 Lane widths. 在多条Lane情况下&#xff0c;有2类symbol framing&#xff0c;一类包含Ordered Sets&#xff0c;一类是TLP和DLLP。 Ordered Sets会同时在每条Lane上传输&#xff0c;所以每条Lane都会有完整的OS. 对于TLP/DLLP来说&#xff0c;S…