Python: sqlite3模块

sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块

SQLite 是一个C语言库,它可以提供一种轻量级的基于磁盘的数据库,这种数据库不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。

 

 

参见

https://github.com/ghaering/pysqlite

pysqlite的主页 -- sqlite3 在外部使用 “pysqlite” 名字进行开发。

https://www.sqlite.org

SQLite的主页;它的文档详细描述了它所支持的 SQL 方言的语法和可用的数据类型。

https://www.w3schools.com/sql/

学习 SQL 语法的教程、参考和例子。

 

 

例子

创建一个text.db数据库,然后创建和插入,定义查找方法,最后使用assert进行测试。

import os, sqlite3
# 当前脚本执行的目录名称。os.path是一个操作路径的模块
print(os.path.dirname(__file__))
# 连接成一个路径
db_file = os.path.join(os.path.dirname(__file__), 'test.db')
# 判断当前目录是否存在这个文件,如果存在则移除。直接删除了,不会到回收站。
if os.path.isfile(db_file):
    os.remove(db_file)

# 连接或创建数据库
conn = sqlite3.connect(db_file)
# 创建操作数据库的光标对象
cursor = conn.cursor()
cursor.execute('create table user(id varchar(20) primary key, name varchar(20), score int)')
cursor.execute(r'insert into user values("A-001", "Adam", 95)')
cursor.execute(r"insert into user values ('A-002', 'Bart', 62)")
cursor.execute(r"insert into user values ('A-003', 'Lisa', 78)")
conn.commit()
cursor.close()
conn.close()

def get_score_in(low, high):
    try:
        conn = sqlite3.connect(db_file)
        cursor = conn.cursor()
        cursor.execute('select name from user where score between ? and ? order by score asc', (low, high) )
        result = cursor.fetchall()
        # 使用list comprehension
        return [ item[0] for item in result]
    except Exception as e:
        print("Error:" , e)
        return []
    finally:
        cursor.close()
        conn.close()

assert get_score_in(80, 95) == ['Adam'], get_score_in(80, 95)
assert get_score_in(60, 80) == ['Bart', 'Lisa'], get_score_in(60, 80)
assert get_score_in(60, 100) == ['Bart', 'Lisa', 'Adam'], get_score_in(60, 100)

print("Pass")

 

posted @ 2019-11-27 09:42  Mr-chen  阅读(779)  评论(0编辑  收藏  举报