Python模块Sqlite数据库模块简介

从Python2.5以后的版本开始引入SQLite,属于Python内置模块,不需要额外安装。Sqlite以小巧快捷著称。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有很多年了,SQLite也迎来了一个版本 SQLite 3已经发布。

Python模块Sqlite数据库模块常用方法简介

1. 创建/打开数据库

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

#在文件中创建数据库

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

1

2

#在文件中创建数据库

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

2.数据库连接对象

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

commit()--事务提交

rollback()--事务回滚

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

cursor()--创建一个游标

1

2

3

4

commit()--事务提交

rollback()--事务回滚

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

cursor()--创建一个游标

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

3.使用游标查询数据库

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

cu=cx.cursor()

1

cu=cx.cursor()

游标对象有以下的操作:

execute()--执行sql语句

executemany--执行多条sql语句

close()--关闭游标

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

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

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

scroll()--游标滚动

1

2

3

4

5

6

7

execute()--执行sql语句

executemany--执行多条sql语句

close()--关闭游标

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

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

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

scroll()--游标滚动

4. 建表

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

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

5. 插入数据

#请注意避免以下写法:

# 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 table_py40 values (?,?,?,?)", t)

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

cx.commit()

1

2

3

4

5

6

7

8

9

10

11

#请注意避免以下写法:

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

pid=200

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

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

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

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

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

cx.commit()

6.查询

cu.execute("select * from table_py40")

1

cu.execute("select * from table_py40")

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

In [10]: cu.fetchall()

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

1

2

In[10]:cu.fetchall()

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

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

7.修改

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

In [13]: cx.commit()

1

2

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

In[13]:cx.commit()

注意,修改数据以后commit提交

8.删除

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

cx.commit()

1

2

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

cx.commit()

9.使用中文

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

x=u'鱼'

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

cu.execute("select * from table_py40")

cu.fetchall()

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

1

2

3

4

5

x=u'鱼'

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

cu.execute("select * from table_py40")

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

1

2

3

4

5

6

7

In[26]:foritemincu.fetchall():

....:forelementinitem:

....:printelement,

....:print

....:

010鱼Yu

120cbaXu

python自带模块连接数据库_Python模块Sqlite数据库模块相关推荐

  1. python对sqlite增删改查_Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】...

    本文实例讲述了python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的 ...

  2. python自带模块连接数据库_Python使用sqlalchemy模块连接数据库操作示例

    本文实例讲述了Python使用sqlalchemy模块连接数据库操作.分享给大家供大家参考,具体如下: 安装: pip install sqlalchemy # 安装数据库驱动: pip instal ...

  3. python3.8.5自带xlrd吗_Python里面的xlrd模块详解

    1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模块? ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel, ...

  4. python和javascript详细对比_python与javascript 引入模块的方法对比

    1.引入整体模块对比 python 方法一: #引入全部函数 from xxx import * #直接使用模块里面的各函数或者属性 test() 方法二: #引入全局的模块 importglobal ...

  5. python引入模块教程_python进阶教程之模块(module)介绍

    我们之前看到了函数和对象.从本质上来说,它们都是为了更好的组织已经有的程序,以方便重复利用. 模块(module)也是为了同样的目的.在Python中,一个.py文件就构成一个模块.通过模块,你可以调 ...

  6. python查看模块功能_Python进阶之inspect模块使用详解

    前几篇内容我们详细探讨了如何从Python中获取帮助信息: 前情回顾 1.查看模块.类提供了哪些接口: 需要帮助吗?dir函数的孪生兄弟,Python中魔法方法__dir__详解 2.查看对象内部属性 ...

  7. python的sqlite数据库_Python操作SQLite数据库

    ### 连接数据库 从2.5版本开始,Python的标准库中就有了一个专门用于SQLite的sqlite3模块.连接SQLite数据库方式如下: ~~~ import sqlite3 as dbapi ...

  8. python如何连接数据库_python如何访问数据库

    1.背景: python提供了很多数据库接口, 常用的数据库有 MS SQL Server /mysql /oracle 等. 打开链接 https://wiki.python.org/moin/Da ...

  9. python操作sqlite数据库_Python 操作SQLite数据库的示例

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.在很多嵌入式产品中使用了它,它占用资源非常的低,python 中默认继承了操作此款数据库的引擎 sq ...

最新文章

  1. hadoop作业初始化过程详解(源码分析第三篇)
  2. POJ 2065 SETI [高斯消元同余]
  3. Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)
  4. 知己知彼 防范攻击:网络攻击步骤与黑客攻击原理
  5. springmvc的一些优化设置
  6. docker的安装与加速器的配置
  7. Confluence 6 workbox 的位置
  8. 堆栈小应用(一):括号匹配程序
  9. Kfc点餐系统 小程序
  10. OP-TEE中的线程管理(一)
  11. android图片轮播序号,求一组详细的图片轮播HTML代码(图片下面标有图片序号,鼠标点击相应序号,播放所对应图片;鼠标点击图片时链接到相应页面) 和一些电子商务网站首页的广告差不多...
  12. 如何做拉新活动?拉新裂变的12种玩法,你学废了没?
  13. 求推荐三本左右 高级的java开发者的相关书籍。类似 大型网站技术架构:核心原理与案例分析+李智慧 之类的书籍。...
  14. FPGA开发板剁手,学生狗省钱大法丨吐血资源
  15. [转帖]SPARC简介
  16. GOCAD如何导出voxet
  17. mysql replicator_聊聊rocketmq-mysql的Replicator
  18. 安卓(调试)有线投屏、wifi投屏到电脑笔记
  19. RabbitMQ - 4种Exchange类型
  20. JAVA中RandomAccess接口

热门文章

  1. 重新认识错过(通向财富自由之路学习笔记十四)
  2. Servlet基础(一) Servlet基础和关键的API介绍
  3. Java 强引用与软引用以及弱引用,虚引用
  4. linux中select()函数分析
  5. 文本转声音,TTS语音实现
  6. vs05b2中给dataset添加表间关系
  7. 68.视图在数据库系统三级结构的哪一级上?
  8. 使用TensorFlow的基本步骤
  9. MIT、CMU 美国计算机专业最牛20名学校大点评
  10. 光源时间_天哪!你们居然都错了!D65光源,指的是上午还是下午的太阳光?