Python操作SQLite数据库

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/xc_zhou/article/details/102511253

什么是SQLite数据库

  • SQLite是一种嵌入式数据库,它的数据库就是一个文件,且SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中,与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中的嵌入式关系型数据库;
  • SQLite遵守ACID,实现了大多数SQL标准,它使用动态的、弱类型的SQL语法;
  • SQLite作为嵌入式数据库,是应用程序,如网页浏览器,在本地/客户端存储数据的常见选择;
import sqlite3
conn = sqlite3.connect('./test.db')
cursor = conn.cursor()
sql = 'insert into students values (?, ?, ?)'
result = cursor.execute(sql, (1, 'Angle' ,18))
conn.commit()  # 通过连接将插入的数据进行提交
#关闭游标和关闭连接
cursor.close()
conn.close()

SQLite是内嵌在Python中的轻量级、基于磁盘文件袋额数据库管理系统,不需要安装和配置服务,支持使用SQL语句来访问数据库。该数据库使用C语言开发,支持大多数SQL91标准,支持原子的、一致的、独立的和持久的事务,不支持外键限制;通过数据库级的独占性和共享性锁定来实现独立事务,当多个线程同时访问同一个数据库并试图写入数据时,每一时刻只有一个线程可以写入数据。

SQLite支持最大140TB大小的单个数据库,每个数据库完全存储在单个磁盘文件中,以B+树数据结构的形式存储,一个数据库就是一个文件,通过直接复制数据库文件就可以实现数据库的备份。如果需要使用可视化管理工具,可以下载并使用SQLiteManager、SQLite Database Browser 或其他类似工具。

访问和操作SQLite数据时,首先导入sqlite3模块,然后创建一个与数据库关联的Connection对象,例如:

# -*- coding:utf-8 -*-
import sqlite3   #导入模块


'''
连接数据库 connect()方法,可以判断一个数据库文件是否存在,如果不存在就自动创建一个,
如果存在的话,就打开那个数据库。
'''
database=r'C:\Users\WYXCz\Desktop\crawl_data.db'
conn = sqlite3.connect(database)
'''
再创建一个Cusor对象,并且调用Cursor对象的execute()方法来执行SQL语句
创建数据表以及查询、插入、修改或删除数据库中的数据
'''
c = conn.cursor()
#创建表
# c.execute('''CREATE TABLE stocks(date text,trans text,symbol text,gty real,price real)''')
#向表中插入一条数据
# 提交事务   SELECT语句不需要此操作,默认的execute方法的,commit_at_once设为True会隐式调用此方法
c.execute('''insert into stocks(date,trans,symbol,gty,price) values('2016-02-05','BUY','RHAT',100,35.14)''')
# insert 方法2
sql1='''insert into stocks(date,trans,symbol,gty,price) values(?,?,?,?)'''
params=('2016-02-05','BUY','RHAT',100,35.14)
c.execute(sql1,params)
#提交当前事务,保存数据
conn.commit()
#关闭数据库连接
conn.close()


#-----------------查询刚才插入的数据  方法1------------------------
#由于刚才已经关闭了数据库连接,需要重新创建Connection对象和Cursor对象
conn = sqlite3.connect(database)
c = conn.execute('''select * from stocks''')
print(c)   #<sqlite3.Cursor object at 0x00000000007E25E0>
print(list(c))   #[('2016-01-05', 'BUY', 'RHAT', 100.0, 35.14)]

#-----------------查询刚才插入的数据  方法2------------------------
conn = sqlite3.connect(database)
c = conn.cursor()
a = c.execute('select * from stocks')
print(c)   #<sqlite3.Cursor object at 0x00000000007E25E0>
# print('fetchone:',c.fetchone())
# print('fetchall',c.fetchall())
for i in a:
    print(i)    #('2016-01-05', 'BUY', 'RHAT', 100.0, 35.14)

Python sqlite3模块的API

我们还可以来简单了解一下sqlite3模块的API

  • sqlite3.connect():打开SQLite数据库连接,返回一个连接对象;
  • connection.cursor():创建一个 cursor;
  • cursor.execute():执行一个 SQL 语句;
  • connection.execute():通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法;
  • cursor.executemany():对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令;
  • connection.executemany():是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executemany 方法;
  • cursor.executescript():一旦接收到脚本,会执行多个 SQL 语句;
  • connection.executescript():是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executescript 方法;
  • connection.total_changes():返回自数据库连接打开以来被修改、插入或删除的数据库总行数;
  • connection.commit():该方法提交当前的事务;
  • connection.rollback():该方法回滚自上一次调用 commit() 以来对数据库所做的更改;
  • connection.close():该方法关闭数据库连接;
  • cursor.fetchone():获取查询结果集中的下一行,返回一个单一的序列,当没有更多可用的数据时,则返回 None;
  • cursor.fetchmany():获取查询结果集中的下一行组,返回一个列表;
  • cursor.fetchall():获取查询结果集中所有(剩余)的行,返回一个列表,当没有可用的行时,则返回一个空的列表;

参考:https://www.cnblogs.com/avention/p/8955130.html https://www.runoob.com/sqlite/sqlite-python.html https://segmentfault.com/a/1190000019212422

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏vue的实战

在项目中使用layUI

14220
来自专栏liulun

CSS旋转动画和动画的拼接

linear是匀速运动,还可以设置为: ease 默认。动画以低速开始,然后加快,在结束前变慢。 ease-in 动画以低速开始。 测...

9020
来自专栏彭湖湾的编程世界

【CSS】CSS特效集锦,视觉魔法的碰撞与融合(一)

在本文中我讲述了7种CSS的特效,它们也许看起来并不惊艳,但是我认为却足够传达本文的理念:编写一些特殊的CSS样式的时候需要不拘于常理,要用特殊的认识角度看待标...

13110
来自专栏全栈前端精选

你未必知道的49个CSS知识点

本文的每一条,都是我曾经发过的掘金沸点,其中有很多条超过了百赞(窃喜)。鉴于时不时有童鞋翻我以前的沸点,因此,本文收集了个人目前发过的所有CSS知识点动图,以便...

7720
来自专栏code秘密花园

多网站项目的 CSS 架构

我在互联网行业的第四份工作,是在我国一家领先的媒体新闻公司中任职一名 CSS/HTML 专家,我的主要职责就是开发可重用的、可扩展的、用于多网站的 CSS 架构...

10730
来自专栏彭湖湾的编程世界

【CSS】Houdini, CSS的成人礼

简单地讲,Paint API就是允许你通过JavaScript注册一个背景函数,类似于linear-gradient()那种,在定义时候可以提供Canvas的2...

8620
来自专栏葡萄城控件技术团队

不用JS,教你只用纯HTML做出几个实用网页效果

在我们以往看到的页面效果中,很多效果是需要JS搭配使用的,而今天在本文中,我将介绍如何使用纯HTML打造属于自己的实用效果。

12740
来自专栏eadela

jQuery基础--选择器

jQuery选择器是jQuery为我们提供的一组方法,让我们更加方便的获取到页面中的元素。注意:jQuery选择器返回的是jQuery对象。

9640
来自专栏eadela

nodejs基础-HTTP

步骤: 1,加载http模块 2.创建http服务 3、为http服务对象添加request事件处理程序 4·开启http服务监听,准备接收客户端请求 注意: ...

7520
来自专栏全栈前端精选

从URL输入到页面展现到底发生什么?

打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解!

7520

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励