SQLite 数据库学习

1.install

sudo apt update
sudo apt install sqlitebrowser

这是一个开源的图形用户界面工具,专门用于开发、管理和分析 SQLite 数据库。它支持创建或导入导出表、编辑数据、执行 SQL 查询等功能。

2.python 操作数据库

Python 内置了 sqlite3 模块,使得与 SQLite 数据库交互变得简单而直接。

  1. 创建连接
    首先,导入 sqlite3 模块并建立到数据库的连接。如果指定的数据库文件不存在,SQLite 会自动创建一个新的数据库文件。
py 复制代码
import sqlite3
# 建立连接
conn = sqlite3.connect('example.db')
# 创建游标对象
cursor = conn.cursor()
  • 创建表
py 复制代码
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS stocks (
    date TEXT,
    trans TEXT,
    symbol TEXT,
    qty REAL,
    price REAL
)
''')
  • 插入数据
    向表中插入数据也很简单,可以使用参数化查询来避免 SQL 注入攻击。
py 复制代码
# 单条插入
cursor.execute("INSERT INTO stocks (date, trans, symbol, qty, price) VALUES (?, ?, ?, ?, ?)",
               ('2024-12-10', 'BUY', 'RHAT', 100, 35.14))

# 批量插入
purchases = [
    ('2024-01-05', 'BUY', 'IBM', 1000, 45.0),
    ('2024-06-17', 'SELL', 'MSFT', 500, 20.0),
]
cursor.executemany("INSERT INTO stocks (date, trans, symbol, qty, price) VALUES (?, ?, ?, ?, ?)", purchases)

# 提交事务
conn.commit()
  • 查询数据: 从表中检索数据同样可以通过执行 SQL 查询实现。
py 复制代码
# 简单查询
for row in cursor.execute("SELECT * FROM stocks ORDER BY price"):
    print(row)

# 条件查询
cursor.execute("SELECT * FROM stocks WHERE symbol=?", ('RHAT',))
print(cursor.fetchall())
  • 更新和删除数据: 你也可以更新或删除记录。
py 复制代码
# 更新
cursor.execute("UPDATE stocks SET qty = ? WHERE symbol = ?", (200, 'RHAT'))
conn.commit()

# 删除
cursor.execute("DELETE FROM stocks WHERE trans = ?", ('SELL',))
conn.commit()
  • 关闭连接: 完成所有操作后,确保关闭游标和连接以释放资源。
py 复制代码
cursor.close()
conn.close()
  • 使用上下文管理器:为了简化代码并确保资源被正确清理,可以使用上下文管理器 (with 语句):
py 复制代码
with sqlite3.connect('example.db') as conn:
    with conn:  # 自动提交
        cursor = conn.cursor()
        cursor.execute("INSERT INTO stocks VALUES ('2024-12-10', 'BUY', 'AAPL', 50, 200.1)")

完整python 代码:

py 复制代码
import sqlite3

# -------- 连接数据库 --------
# 建立连接
# conn = sqlite3.connect('/mnt/data2/exp_data/1208_sql_learn/example.db')
conn = sqlite3.connect('/mnt/data2/exp_data/1208_sql_learn/example.sq3')

# 创建游标对象
cursor = conn.cursor()

# -------- 创建表 --------
cursor.execute('''
CREATE TABLE IF NOT EXISTS stocks (
    date TEXT,
    trans TEXT,
    symbol TEXT,
    qty REAL,
    price REAL
)
''')

# -------- 插入数据 --------
# 单条插入
cursor.execute("INSERT INTO stocks (date, trans, symbol, qty, price) VALUES (?, ?, ?, ?, ?)",
               ('2024-12-10', 'BUY', 'RHAT', 100, 35.14))

# 批量插入
purchases = [
    ('2024-01-05', 'BUY', 'IBM', 1000, 45.0),
    ('2024-06-17', 'SELL', 'MSFT', 500, 20.0),
]
cursor.executemany("INSERT INTO stocks (date, trans, symbol, qty, price) VALUES (?, ?, ?, ?, ?)", purchases)

# 提交事务
conn.commit()

# -------- 查询数据 --------
# 简单查询
for row in cursor.execute("SELECT * FROM stocks ORDER BY price"):
    print(row)

def print_query_result(cursor, query='SELECT * FROM stocks ORDER BY price'):
    for row in cursor.execute(query):
        print(row)

# 条件查询
cursor.execute("SELECT * FROM stocks WHERE symbol=?", ('RHAT',))
print(cursor.fetchall())

# -------- 更新和删除 --------
# 更新
cursor.execute("UPDATE stocks SET qty = ? WHERE symbol = ?", (200, 'RHAT'))
conn.commit()
print_query_result(cursor)
# 删除
cursor.execute("DELETE FROM stocks WHERE trans = ?", ('SELL',))
conn.commit()
print_query_result(cursor)
# -------- 关闭连接 --------
cursor.close()
conn.close()

# # -------- 使用上下文管理器 --------
# with sqlite3.connect('example.db') as conn:
#     with conn:  # 自动提交
#         cursor = conn.cursor()
#         cursor.execute("INSERT INTO stocks VALUES ('2024-12-10', 'BUY', 'AAPL', 50, 200.1)")

3.SQL语句

python 也是调用的 sql 语句:

相关推荐
五味香44 分钟前
Java学习,查找List最大最小值
android·java·开发语言·python·学习·golang·kotlin
小爬菜1 小时前
Django学习笔记(启动项目)-03
前端·笔记·python·学习·django
小爬菜1 小时前
Django学习笔记(bootstrap的运用)-04
笔记·学习·django
叫我龙翔2 小时前
【博客之星】2024年度创作成长总结 - 面朝大海 ,春暖花开!
学习
小高不明2 小时前
仿 RabbitMQ 的消息队列2(实战项目)
java·数据库·spring boot·spring·rabbitmq·mvc
DZSpace2 小时前
使用 Helm 安装 Redis 集群
数据库·redis·缓存
张飞光2 小时前
MongoDB 创建集合
数据库·mongodb
dal118网工任子仪2 小时前
69,【1】BUUCTF WEB ssrf [De1CTF 2019]SSRF Me
笔记·学习
Hello Dam2 小时前
接口 V2 完善:基于责任链模式、Canal 监听 Binlog 实现数据库、缓存的库存最终一致性
数据库·缓存·canal·binlog·责任链模式·数据一致性
张飞光2 小时前
MongoDB 创建数据库
数据库·mongodb·oracle