当前位置: 首页 > news >正文

数据库-python SQLite3

数据库-python SQLite3

  • 一:sqlite3 简介
  • 二: sqlite3 流程
    • 1> demo
    • 2> sqlite3 流程
  • 三:sqlite3 step
    • 1> create table
    • 2> insert into
    • 3> update
    • 4> select
      • 1. fetchall()
      • 2. fetchone()
      • 3. fetchmany()
    • 5> delete
    • 6> other step
  • 四: Mysql
    • 1> Mysql知识详解

一:sqlite3 简介

sqlite3 是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置。sqlite3 支持SQL语句,对数据库的操作简单高效。因此,sqlite3 非常适用于小型项目和单机应用程序,是Python开发中常用的数据库解决方案之一,能为程序提供完整的数据库解决方案.

二: sqlite3 流程

1> demo

utils_sqlite3.py

import sqlite3
import logging
logger = logging.getLogger("utils_sqlite3")def excute_sql(sql_connect, sql_cmd):sql_cursor = sql_connect.cursor()# logging.info(sql_cmd)try:sql_cursor.execute(sql_cmd)sql_connect.commit()sql_cursor.close()except Exception as e:logger.error(f"sqlite3.OperationalError: {e}")raise Exception(f"sqlite3.OperationalError: {e}")

create_tables.py

def init_sqlite(file_name, tabel_name, primary_key):db_connect = sqlite3.connect(file_name)if primary_key:create_table_cmd = '''CREATE TABLE {}(ENTRY TEXT,PART TEXT,PART_LAYER TEXT,CASE_NAME TEXT,API_CONNECT TEXT,API_PARAMETER TEXT,PRIMARY KEY(ENTRY, CASE_NAME))'''.format(tabel_name)else:create_table_cmd = '''CREATE TABLE {}(ENTRY TEXT,PART TEXT,PART_LAYER TEXT,CASE_NAME TEXT,API_CONNECT TEXT,API_PARAMETER TEXT,)'''.format(tabel_name)excute_sql(db_connect, create_table_cmd)db_connect.close()
init_sqlite(performence_log_file, db_table_name, primary_key)

2> sqlite3 流程

step流程
创建和连接数据库import sqlite3 db_connect = sqlite3.connect(file_name)
创建表格并提交sql_cursor = db_connect .cursor() db_connect.commit() sql_cursor.execute(create_table_cmd)
插入数据并提交sql_cursor.execute(insert_sql ) db_connect.commit()
关闭连接sql_cursor.close() db_connect.close()

三:sqlite3 step

1> create table

import sqlite3
db_connect = sqlite3.connect(file_name)
sql_cursor = sql_connect.cursor()
create_table_cmd = '''CREATE TABLE {}(ENTRY TEXT,PART TEXT,PART_LAYER TEXT,CASE_NAME TEXT,API_CONNECT TEXT,API_PARAMETER TEXT,PRIMARY KEY(ENTRY, CASE_NAME))'''.format(tabel_name)
sql_cursor.execute(create_table_cmd)
sql_connect.commit()sql_cursor.close()

2> insert into

import sqlite3
db_connect = sqlite3.connect(file_name)
sql_cursor = sql_connect.cursor()
insert_sql = '''INSERT INTO {}     		   	(ENTRY,PART,PART_LAYER,CASE_NAME,API_CONNECT,API_PARAMETER)VALUES ('{}', '{}', '{}', '{}', '{}', '{}')'''.format(db_table_name, args.entry,  args.part, args.part_layer, args.case, connect_res, "NULL")
sql_cursor.execute(insert_sql )
sql_connect.commit()sql_cursor.close()

3> update

import sqlite3
db_connect = sqlite3.connect(file_name)
sql_cursor = sql_connect.cursor()
insert_sql = '''update {} set  API_PARAMETER="{}"'''.format(db_table_name, para_res)
sql_cursor.execute(insert_sql )
sql_connect.commit()sql_cursor.close()

4> select

1. fetchall()

fetchall()函数是游标对象(Cursor)的一个方法,用于获取查询结果集中的所有行。使用该函数,可以一次性获取查询结果集中的所有行,并以列表的形式返回。

import sqlite3
table_name = "interface_test"
db = sqlite3.connect(path)
cursor = db.cursor()
select_sql = '''select* from {} where ENTRY = "{}"'''.format(table_name, "interface")
record_cursor = cursor.execute(select_sql)
records = record_cursor.fetchall()
db.commit()
cursor.close()
db.close()

注意:如果查询结果集非常大,使用fetchall()函数可能会消耗较多的内存。在这种情况下,可以考虑使用 fetchone()或fetchmany()函数来分批获取查询结果

2. fetchone()

fetchone()函数是游标对象(Cursor)的一个方法,用于获取查询结果集中的下一行。使用该函数,可以逐行获取查询结果集中的数据。每次调用fetchone()函数,它会返回结果集中的下一行数据。当没有更多的行可用时,它将返回None。

table_name = "interface_test"
db = sqlite3.connect(path)
cursor = db.cursor()
select_sql = '''select* from {} where ENTRY = "{}"'''.format(table_name, "interface")
record_cursor = cursor.execute(select_sql)
#获取结果中下一行数据
records = record_cursor.fetchone()
db.commit()
cursor.close()
db.close()

3. fetchmany()

fetchmany(size)函数是游标对象(Cursor)的一个方法,用于获取查询结果集中的多行数据,最多获取size行。注意:每次调用 fetchmany()都会从上次获取数据的地方开始继续获取,也就是说,如果先调用了fetchmany(5),然后再调用 fetchmany(5),那么第二次调用将返回查询结果的第6-10行。如果想要重新从头开始获取数据,需要先调用 cursor.scroll(0, mode=‘absolute’) 来重置游标位置。

table_name = "interface_test"
db = sqlite3.connect(path)
cursor = db.cursor()
select_sql = '''select* from {} where ENTRY = "{}"'''.format(table_name, "interface")
record_cursor = cursor.execute(select_sql)
#最多获取5行
records = record_cursor.fetchmany(5)
db.commit()
cursor.close()
db.close()

5> delete

import sqlite3
table_name = "interface_test"
db = sqlite3.connect(path)
cursor = db.cursor()
delete_sql = '''delete from {} where ENTRY = "{}"'''.format(table_name, "interface")
record_cursor = cursor.execute(delete_sql)
db.commit()
cursor.close()
db.close()

6> other step

stepdetail
ALTER TABLE修改表格结构
DROP TABLE删除表格
CREATE INDEX创建索引
DROP INDEX删除索引
SELECT DISTINCT选择唯一记录
ORDER BY排序查询结果
GROUP BY按列分组
HAVING过滤分组后的数据
LIMIT-限制查询结果数量
JOIN连接表格
LEFT JOIN左连接
RIGHT JOIN右连接
FULL OUTER JOIN全外连接
UNION合并两个查询结果
EXCEPT排除两个查询结果中的重复行

四: Mysql

1> Mysql知识详解

https://blog.csdn.net/weixin_42914706/article/details/111658640

http://www.lryc.cn/news/388356.html

相关文章:

  • FFMpeg rtmp 推送本地yuv文件
  • websocket使用,spring boot + vite + vue3
  • 基础位运算
  • 性价比高真无线蓝牙耳机有哪些?性价比真无线蓝牙耳机推荐
  • Big Data Tools插件
  • 两个li标签之间有空格这是什么原因
  • 使用Colly库进行高效的网络爬虫开发
  • 【C#】制作图集
  • 行列视报表系统制作的报表与厂级监控信息系统(SIS)系统中的报表有什么区别?
  • 算法08 广/宽度优先搜索及相关问题详解
  • PyTorch 版本与 CUDA 版本的兼容性示例
  • Selenium进行Web自动化滚动
  • 机器学习模型训练过程和预测过程 用孩子来生动的比喻 --九五小庞
  • 【爱上C++】详解string类2:模拟实现、深浅拷贝
  • 狄克斯特拉算法
  • 2024推荐整理几个磁力导航网站可提供海量资源的
  • 链式访问:C语言中的函数调用技巧
  • 数据库设计(实战项目)-1个手机号多用户身份
  • vue+fineReport 使用前端搜索+报表显示数据
  • 高阶面试-存储系统的设计
  • 柔性测斜仪:土木工程与地质监测的得力助手
  • 数字资产和数据资产你真的了解吗?
  • 【每日一练】python运算符
  • CesiumJS【Basic】- #032 绘制虚线(Primitive方式)
  • 海尔智家:科技优秀是一种习惯
  • 【Android】实现图片和视频混合轮播(无限循环、视频自动播放)
  • VLAN基础
  • pytest-yaml-sanmu(五):跳过执行和预期失败
  • linux指令整合(centos系统持续更新中。。。)
  • 个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)