zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    UPC 5130 Concerts
    poj 1079 Calendar Game
    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛
    CF932E
    浅谈Tarjan算法
    拉格朗日差值
    扩展欧几里得算法(exgcd)
    欧拉定理
    莫比乌斯反演
    除法分块
  • 原文地址:https://www.cnblogs.com/chentianwei/p/11939891.html
Copyright © 2011-2022 走看看