# import sqlite3
:Python 的标准库,用于连接 SQLite 数据库,执行 SQL 命令。
# 用法示例
连接到数据库:
>>> import sqlite3
>>>
>>> db = sqlite3.connect("db.sqlite3") # 连接到一个 SQLite 数据库,如果该文件不存在则自动创建
>>> # db = sqlite3.connect(":memory:") # 在内存中打开一个数据库
>>>
>>> db.execute("CREATE TABLE table1(id INTEGER PRIMARY KEY, name TEXT)") # 执行一条 SQL 命令
<sqlite3.Cursor object at 0x000001715CB4BCE0>
增:
>>> db.execute("INSERT INTO table1 (id,name) VALUES (1,'one')") # 直接输入一条 SQL 命令去执行
<sqlite3.Cursor object at 0x000001715CBDB9D0>
>>> db.execute("INSERT INTO table1 (id,name) VALUES (?, ?)", (2, 'two')) # 输入 SQL 模板和参数
<sqlite3.Cursor object at 0x000001715CB4BCE0>
>>>
>>> datas = [(i, str(id(i))) for i in range(3, 10)]
>>> db.executemany("INSERT INTO table1 (id, name) VALUES (?, ?)", datas) # 插入多行数据
<sqlite3.Cursor object at 0x000001715CBDB9D0>
- SQLite 的 text 类型字段采用 utf-8 编码,因此可以直接传入 str 或 bytes 类型的参数。
查:
>>> ret = db.execute("SELECT * FROM table1") # 查询数据,返回一个可迭代对象
>>> ret
<sqlite3.Cursor object at 0x000001715CB4BCE0>
>>> for line in ret: # 每次迭代返回一行数据(tuple 类型)
... print(line)
...
(1, 'one')
(2, 'two')
(3, '140708040237776')
...etc...
>>>
>>> ret = db.execute("SELECT * FROM table1 WHERE id=? AND name=?", (1, "one")) # 输入 SQL 模板和参数
>>> ret
<sqlite3.Cursor object at 0x000001715CBDB9D0>
>>> list(ret)
[(1, 'one')]
改:
db.execute("UPDATE table1 SET name=? WHERE id=?", ("one", 1))
删:
db.execute("DELETE FROM table1 WHERE id=1")
关闭数据库:
db.commit() # 提交对数据库的修改
# db.rollback() # 将数据库回滚到上一次 commit()时的状态
db.close() # 关闭数据库