前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python操作SQLite数据库

Python操作SQLite数据库

作者头像
周小董
发布2019-10-22 15:14:45
1.5K0
发布2019-10-22 15:14:45
举报
文章被收录于专栏:python前行者python前行者

版权声明:本文为博主原创文章,遵循 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作为嵌入式数据库,是应用程序,如网页浏览器,在本地/客户端存储数据的常见选择;
代码语言:javascript
复制
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对象,例如:

代码语言:javascript
复制
# -*- 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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是SQLite数据库
  • Python sqlite3模块的API
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档