python散装笔记——50: Sqlite3 模块
1: Sqlite3 - 不需要单独的服务器进程
sqlite3 模块由 Gerhard H"aring 编写。要使用该模块,首先必须创建一个表示数据库的 Connection 对象。这里的数据将存储在 example.db 文件中:
import sqlite3
conn = sqlite3.connect('example.db')
您还可以提供特殊名称 :memory:,在 RAM 中创建数据库。有了 Connection 之后,就可以创建一个游标对象,并调用其 execute() 方法来执行 SQL 命令:
c = conn.cursor()
# 创建表
c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''')
# 插入一行数据
c.execute("INSERT INTO stocks VALUES ('2025-01-05','BUY','RHAT',100,35.14)")
# 保存(提交)更改
conn.commit()
# 如果已经完成,我们也可以关闭连接。只要确保任何更改都已提交,否则就会丢失。
conn.close()
2: 从数据库获取数值和错误处理
从 SQLite3 数据库获取数值。
为了使下面的的示例不至于只有一条数据,我们先为为数据库添加多条数据:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("INSERT INTO stocks VALUES ('2025-01-02','BUY','SOCKTS',200,35.14)")
c.execute("INSERT INTO stocks VALUES ('2024-12-24','BUY','GLOVES',100,33.53)")
c.execute("INSERT INTO stocks VALUES ('2024-12-21','SELL','COAT',40,148.69)")
c.execute("INSERT INTO stocks VALUES ('2024-12-05','SELL','PANTS',80,125.98)")
c.execute("INSERT INTO stocks VALUES ('2024-11-30','BUY','SHOES',130,206.47)")
conn.commit()
conn.close()
打印选择查询返回的行值
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("SELECT * from stocks where trans='BUY'")
for row in c:
print(row) # will be a list
获取单个匹配的 fetchone() 方法
print(c.fetchone())
对于多行,使用 fetchall() 方法
a=c.fetchall() #which is similar to list(cursor) method used previously
for row in a:
print(row)
可使用 sqlite3.Error 内置函数进行错误处理
try:
#SQL Code
except sqlite3.Error as e:
print("An error occurred:", e.args[0])