python数据库如何连接SQLite详解

目录
  • 1. 建立与SQLite数据库的连接
    • 1.1 建立基于内存的数据库
    • 1.2 建立基于硬盘的数据库
    • 1.3 基于内存和基于硬盘的区别
  • 2. 在指定数据库里建立表结构
    • 2.1 建立数据库表结构
    • 2.2 查找数据
    • 2.3 删除数据
  • 总结

1. 建立与SQLite数据库的连接

SQLite是python自带的一款基于内存或硬盘的、开源的、关系型的轻量级数据库。这意味着无需下载安装SQLite数据库产品和对应的数据库驱动程序,可以被python语言以模块导入方式直接调用。其位置在python的安装路径为Lib/sqlite3/。

对关系型数据库进行读写操作,需要建立如下几个操作步骤:

  • 第一步,建立应用系统与数据库的连接;
  • 第二步,需要建立数据库实例,通俗理解是建立一个存储数据库的文件;
  • 第三步,建立对应的表结构;
  • 第四步,往表里写记录,读记录;
  • 第五步,关闭与数据库的连接。

1.1 建立基于内存的数据库

import sqlite3   #导入sqlite3模块
conn = sqlite3.connect(":memory:")     #建立一个基于内存的数据库
conn.close()        #关闭与数据库的连接

当对数据库操作完成时,建议养成及时关闭数据库连接的好习惯,避免打开数据库连接过多,消耗内存存储空间。

1.2 建立基于硬盘的数据库

import sqlite3   #导入sqlite3模块
conn = sqlite3.connect("First.db")     #建立一个基于硬盘的数据库实例
conn.close()        #关闭与数据库的连接

效果:

执行代码后,在python的安装路径下生成First.db文件。

1.3 基于内存和基于硬盘的区别

基于内存数据库容易丢失(特别是关机或因突发事故就会丢失内存里的数据),基于硬盘数据可以持久保存基于内存数据读写速度快,基于硬盘数据读写速度慢基于内存数据存储容量受内容受内容可用空间限制,基于硬盘数据存储容量受限于硬盘可用空间

2. 在指定数据库里建立表结构

在关系型数据库中,需要创建关系型特征的表结构,才能往表里写入数据以及进行数据库的操作。

将下列二维结构化记录表依次存放到数据库表中。

建立一个对应的数据库表需要建立钓鱼日期、名称、数量、价格、备注五个字段。其中,字段值需要确定数据类型,如数量为整数,价格为浮点数,钓鱼日期、名称、备注为字符型。

2.1 建立数据库表结构

import sqlite3   #导入sqlite3模块
conn = sqlite3.connect("First.db")     #建立一个基于硬盘的数据库实例
cur = conn.cursor()         #通过建立数据库游标对象,准备读写操作
cur.execute("Create table T_fish(date text,name text,nums int,price real,Explain text)")  #根据上表结构建立对应的表结构对象
cur.execute("insert into T_fish Values('2018-3-28','黑鱼',10,28.3,'tom')")    #插入一行记录结果信息
conn.commit()   #保存提交,确保数据保存成功
conn.close()        #关闭与数据库的连接

在First.db数据库中创建一个T_fish表,然后往表里插入一行记录,最后提交保存并关闭数据库连接。

  • 建立数据库表采用的时标准SQL命令的方法,在数据库里创建对应的T_fish表。
  • 插入一行记录,通过游标的execu()方法,利用SQL的insert命令往T_fish表里执行一条插入记录;可以连续多行执行execu()方法,执行多条SQL语句
  • 提交保存,在对数据库进行写操作时,最后必须调用Connection对象的commit()方法,才能把数据真的提交到数据库中,否则会存在数据丢失。

游标起指向某数据库的某表的作用,只有建立了确定的表的指向关系,才能进行插入、修改、删除、查找等操作。

2.2 查找数据

import sqlite3
conn = sqlite3.connect("First.db")   #连接数据库
cur = conn.cursor()        #创建关联数据库的游标实例
cur.execute("select * from T_fish")  #对T_fish表执行数据查找命令
for row in cur.fetchall():      #以一条记录为元组单位返回结果给row
    print(row)
conn.close()   #关闭数据库

效果:

2.3 删除数据

import sqlite3
conn = sqlite3.connect("First.db")    #连接数据库
cur = conn.cursor()         #创建游标实例
cur.execute("insert into T_fish Values('2018-3-29','鲤鱼',17,10.3,'john')")   #插入一条数据
cur.execute("insert into T_fish Values('2018-3-30','鲢鱼',9,9.2,'tim')")
conn.commit()   #提交数据保存到磁盘
cur.execute("select * from T_fish")    #查找表里的记录
for row in cur.fetchall():
    print(row)
cur.execute("delete from T_fish where nums=10")   #删除数量为10的记录
conn.commit()   #提交结果到硬盘
print('=='*50)
cur.execute("select * from T_fish")    #查找T_fish表里的记录
for row in cur.fetchall():
    print(row)
conn.close()

效果:

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python中的mysql数据库LIKE操作符详解

    LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式. 语法: SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern pattern这里就是放指定模板的地方,而这里就要用到" % ",也叫做通配符 %如果是放在条件前面,那就是查以...结尾的数据:例如:%李 %如果是放在条件后面,那就是查以...开头的数据:例如:李% %如果是在条件前后都存在,那就是查包含的数据:例如:%李% 小知识点: ER

  • python数据库操作--数据库使用概述

    目录 1. 数据库基础知识 2. 访问数据库基本原理 1.应用系统 2.数据库驱动程序  3.数据库系统 3. ODBC与ADO 1.** ODBC** 2.ADO 4. 关系型数据库 总结 1. 数据库基础知识 数据库(DB),可以长期存储在计算机内.有组织的.可共享的数据集合.大多数数据以特殊格式的数据库文件形式存在于计算机的硬盘上,极少部分是以长期驻留内存的形式进行组织和共享的数据集合. 数据库管理系统(DBMS是对数据库进行统一管理的和共享数据操作的软件,其主要功能包括建立.使用.维护数

  • MongoDB安装使用并实现Python操作数据库

    一.MongoDB介绍 MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引. 二.安装MongoDB MongoDB安装很简单,无需下载源文件,可以直接用apt-ge

  • Python连接Postgres/Mysql/Mongo数据库基本操作大全

    目录 1.连接PG库 2.连接MySQL 2.1 连接数据库 2.2 创建数据库和表 2.3 插入数据 2.4 数据库查询操作 2.5 数据库更新操作 2.6 删除数据操作 3.连接Mongo库 3.1 判读库是否存在 3.2 创建集合(表) 3.3 插入集合 3.4 返回 _id 字段 3.5 插入多个文档 3.6 插入指定 _id 的多个文档 3.7 查询一条数据 3.8 查询集合中所有数据 3.9 查询指定字段的数据 3.10 根据指定条件查询 3.11 高级查询 3.12 使用正则表达式

  • Python模块对Redis数据库的连接与使用讲解

    下面看看Python模块对Redis数据库的连接与使用: ​ 1.Python连接Redis数据库方法: import redis res = redis.Redis( host="127.0.0.1", port=6379, db=0, password="XXXXXX", decode_responses=True ) res.set("name","Li") print(res.get("name")

  • python数据库如何连接SQLite详解

    目录 1. 建立与SQLite数据库的连接 1.1 建立基于内存的数据库 1.2 建立基于硬盘的数据库 1.3 基于内存和基于硬盘的区别 2. 在指定数据库里建立表结构 2.1 建立数据库表结构 2.2 查找数据 2.3 删除数据 总结 1. 建立与SQLite数据库的连接 SQLite是python自带的一款基于内存或硬盘的.开源的.关系型的轻量级数据库.这意味着无需下载安装SQLite数据库产品和对应的数据库驱动程序,可以被python语言以模块导入方式直接调用.其位置在python的安装路

  • 构建高效的python requests长连接池详解

    前文: 最近在搞全网的CDN刷新系统,在性能调优时遇到了requests长连接的一个问题,以前关注过长连接太多造成浪费的问题,但因为系统都是分布式扩展的,针对这种各别问题就懒得改动了. 现在开发的缓存刷新系统,对于性能还是有些敏感的,我后面会给出最优的http长连接池构建方式. 老生常谈: python下的httpclient库哪个最好用? 我想大多数人还是会选择requests库的.原因么?也就是简单,易用! 如何蛋疼的构建reqeusts的短连接请求: python requests库默认就

  • Python数据库sqlite3图文实例详解

    目录 前言 sqlite3数据库 1.需要的模块(只有一个) 2.模块的使用 2.1创建与数据库的连接 2.2创建游标 2.3创建 table 2.4插入数据 2.5查找数据 快乐的coding时间! 最后 前言 提到数据库,大家第一时间想到的可能是 sql 数据库,这种数据库非常好用,但是对于新手就不是很容易上手,需要熟悉一段时间才可以大概掌握.这种数据库在大型的项目开发过程中用到的地方不会很多,但是一些普通的项目还是很实用的,大大减少了代码量. sqlite3数据库 sqlite3 数据库是

  • 如何利用C++实现mysql数据库的连接池详解

    目录 为什么是mysql? 为什么要搞资源池? mysql资源池实现的案例源码 头文件:MysqlPool.h 实现文件:MysqlPool.cpp 测试函数 总结 为什么是mysql? 现在几乎所有的后台应用都要用到数据库,什么关系型的.非关系型的:正当关系的,不正当关系的:主流的和非主流的, 大到Oracle,小到sqlite,以及包括现在逐渐流行的基于物联网的时序数据库,比如涛思的TDengine,咱们中国人自己的开源时序数据库,性能杠杠滴. 凡此总总,即使没用过,也听说过,但大部分人或企

  • 深入分析C#连接Oracle数据库的连接字符串详解

    两种方式:1.IP+SID方式 2.配置链接方式1..IP+SID方式 复制代码 代码如下: DbHelperOracle.connectionString = string.Format(@"Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = 1521)))(CONNECT_DATA =(SID = {1})(SERVER = DEDICATED)));User Id={

  • Java之jdbc连接mysql数据库的方法步骤详解

    Java:jdbc连接mysql数据库 安装eclipse和mysql的步骤这里不赘述了. 1.一定要下jar包 要想实现连接数据库,要先下载mysql-connector-java-5.1.47(或者其他版本)的jar包.低版本的jar包不会出现时差问题的异常. 建议在下载界面点右边的"Looking for previous GA versions?"下载低版本的. https://www.jb51.net/article/190860.htm我看的是这个教程. 2.mysql前期

  • MySQL数据库学习之去重与连接查询详解

    目录 1.去重 2.连接查询 使用where进行多表连接查询 内连接 - 等值连接 内连接 - 非等值连接 内连接 - 自连接 外连接 - 左右外连接 三表连接 1.去重 示例表内容参考此文章 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 例如:去重显示岗位信息: mysql> select distinct job from emp; +-----------+ | job | +-----------+ | CLERK

  • Python TCP全连接攻击中SockStress全连接攻击详解

    攻击者向目标发送一个很小的流量,但是会造成产生的攻击流量是一个巨大的,该攻击消耗的是目标系统的CPU/内存资源,使用低配版的电脑,依然可以让庞大的服务器拒绝服务,也称之为放大攻击. 该攻击与目标建立大量的socket连接,并且都是完整连接,最后的ACK包,将Windows大小设置为0,客户端不接收数据,而服务器会认为客户端缓冲区没有准备好,从而一直等待下去(持续等待将使目标机器内存一直被占用),由于是异步攻击,所以单机也可以拒绝高配的服务器. #coding=utf-8 import socke

  • Python任务调度利器之APScheduler详解

    任务调度应用场景 所谓的任务调度是指安排任务的执行计划,即何时执行,怎么执行等.在现实项目中经常出现它们的身影:特别是数据类项目,比如实时统计每5分钟网站的访问量,就需要每5分钟定时从日志数据分析访问量. 总结下任务调度应用场景: 离线作业调度:按时间粒度执行某项任务 共享缓存更新:定时刷新缓存,如redis缓存:不同进程间的共享数据 任务调度工具 linux的crontab, 支持按照分钟/小时/天/月/周粒度,执行任务 java的Quartz windows的任务计划 本文介绍的是pytho

  • Python入门之基础语法详解

    一.我的经历及目标 在学习python之前:我学习过C/C++,在学校期间做过很多的项目,已经有两年多了,算是对C/C++非常的熟悉了,精通不敢说,但是对于面向过程和面向对象有很深刻的认识,做过很多的开发,学习数据库,MFC, QT, linux下利用C/C++进行服务器的开发,QT环境下进行模拟QQ的开发- 听说python挺火的,我也来尝试一门新的语言,python和c有80%的相似性,毕竟是用C来开发的语言,但是是面向过程的一门语言,有C++的继承等相似的特性,感觉更有信心学会它了,毕竟可

随机推荐