使用Python操作SQLite

1、连接数据库

python 复制代码
import sqlite3
conn = sqlite3.connect('example.db')

其中 example.db 是数据库文件名,如果不存在则会自动创建。connect() 方法还可以接收多个参数,用于设置连接属性,如

python 复制代码
conn = sqlite3.connect('example.db', isolation_level=None, timeout=5)
# 其中 isolation_level 表示事务隔离级别,timeout 表示超时时间,None 表示不限制。

2、Python 如何创建 SQLite 数据库表

python 复制代码
import sqlite3
conn = sqlite3.connect('example.db', isolation_level=None, timeout=5)
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS stocks
(date text, trans text, symbol text, qty real, price real)''')
# 以上代码创建了一个名为 stocks 的表,包含 date、trans、symbol、qty、price 五个字段,分别表示日期、交易类型、股票代码、数量和价格。其中 IF NOT EXISTS 表示如果表已经存在则不再创建。
conn.commit()
conn.close()

3、操作SQLite数据库

python 复制代码
conn = sqlite3.connect('example.db', isolation_level=None, timeout=5)
c = conn.cursor()
c.execute("INSERT INTO stocks VALUES ('2006-01-05', 'BUY', 'RHAT', 100, 35.14)")
# 以上代码插入了一条数据,日期为 2006-01-05,交易类型为 BUY,股票代码为 RHAT,数量为 100,价格为 35.14。
conn.commit()
conn.close()
python 复制代码
conn = sqlite3.connect('example.db', isolation_level=None, timeout=5)
c = conn.cursor()
for row in c.execute("SELECT * FROM stocks WHERE date='2006-01-05'"):
    print(row)
conn.close()
# 以上代码查询了表 stocks 中股票代码为 RHAT 的数据,并打印出来。
python 复制代码
conn = sqlite3.connect('example.db', isolation_level=None, timeout=5)
c = conn.cursor()
c.execute("UPDATE stocks SET qty=200 WHERE symbol='RHAT'")
conn.commit()
conn.close()
# 以上代码更新了表 stocks 中股票代码为 RHAT 的数据,将数量改为 200。
python 复制代码
conn = sqlite3.connect('example.db', isolation_level=None, timeout=5)
c = conn.cursor()
c.execute("DELETE FROM stocks WHERE symbol='RHAT'")
conn.commit()
conn.close()
# 以上代码删除了表 stocks 中股票代码为 RHAT 的数据。
python 复制代码
conn = sqlite3.connect('example.db', isolation_level=None, timeout=5)
c = conn.cursor()
try:
    c.execute("BEGIN")
    c.execute("UPDATE stocks SET qty=200 WHERE symbol='RHAT'")
    c.execute("COMMIT")
except:
    c.execute("ROLLBACK")
    conn.close()
# 以上代码使用 BEGIN 开始一个事务,如果执行过程中出现异常,则使用 ROLLBACK 回滚事务,否则使用 COMMIT 提交事务。

查看数据库中的所有表名及其字段:

python 复制代码
# 获取sqlite3数据库mydb.db中的表名和表字段名
import sqlite3
sqlite_path = r'E:\cbdb_sqlite\CBDB_20190424.db'
def sqlite_table(sqlite_path):
    conn = sqlite3.connect(sqlite_path)
    cur = conn.cursor()
    # 获取表名,保存在table_name列表
    cur.execute("select name from sqlite_master where type='table'")
    rows = cur.fetchall()
    table_name = [row[0] for row in rows]
    return table_name
    # 获取表的列名(字段名),保存在col_names列表,每个表的字段名集为一个元组
def sqlite_col_name(sqlite_path, table_name):
    conn = sqlite3.connect(sqlite_path)
    cur = conn.cursor()
    col_names = []
    cur.execute('pragma table_info({})'.format(table_name))
    col_name = cur.fetchall()
    col_name = [x[1] for x in col_name]
    col_name = tuple(col_name)
    col_names.append(col_name)
    return col_names
sqlite_table(sqlite_path)
sqlite_col_name(sqlite_path=sqlite_path, table_name='tablesfields')
相关推荐
筱昕~呀10 小时前
“烷”域天观——甲烷监测系统
人工智能·python·深度学习·豆包
mahtengdbb110 小时前
YOLO11-seg-ASF-DySample:人脸检测识别新突破,提升检测精度与效率
python
测试老哥10 小时前
接口测试:加密和签名
自动化测试·软件测试·python·功能测试·测试工具·测试用例·接口测试
今天又得骑车了10 小时前
Python 3.12 内置函数全图鉴:71 个“官方外挂”详解
python
CCPC不拿奖不改名10 小时前
大语言模型的基础:大语言模型基础认知
人工智能·python·学习·语言模型·自然语言处理·面向对象·智能体
星火开发设计10 小时前
关系代数:数据库查询的数学基石与实战解析
数据库·学习·oracle·知识·关系代数
夏沫mds10 小时前
基于 Flask 与Vue 3 及协同过滤算法的智能电影推荐系统
vue.js·python·flask·协同过滤
ascarl201010 小时前
Oracle 12c 官方卸载工具 (Deinstall Tool) 标准流程
数据库·oracle
子午10 小时前
【2026原创】鱼类识别系统~Python+深度学习+CNN卷积神经网络算法+模型训练+图像识别
图像处理·python·深度学习·cnn
地理探险家10 小时前
【YOLOv8实战】15组衣物类深度学习数据集分享|附加载+标签管理代码
人工智能·python·深度学习·yolo·模型训练·电商视觉