1 引言
在进行数据存储和管理时,我们常常需要一个轻量级而又功能强大的数据库系统。sqlite 是一个极受欢迎的轻量级数据库,它被广泛应用于各种大小的项目中。python 自带了对 sqlite 的支持,使得在 python 中使用 sqlite 变得非常简单和直观。本文将详细介绍 python 中如何使用 sqlite3 库进行数据库操作。
2 sqlite3 简介
sqlite 是一个基于 c 语言的轻量级 sql 数据库引擎。它不需要独立的服务器进程,数据库完整地存储在一个磁盘文件中。python 标准库中的 sqlite3 模块提供了一个与 sqlite 数据库交互的接口。
3 基本步骤
使用 sqlite3 模块主要包括以下几个步骤:
- 连接数据库
- 创建表
- 插入数据
- 查询数据
- 更新/删除数据
- 关闭数据库连接
4 示例代码
4.1 连接数据库
import sqlite3
# 连接到数据库(如果不存在,则创建)
conn = sqlite3.connect('example.db')
4.2 创建表
# 创建一个 cursor 对象
cursor = conn.cursor()
# 创建表
cursor.execute('''create table if not exists users
               (id integer primary key, name text, age integer)''')
4.3 插入数据
# 插入数据
cursor.execute("insert into users (name, age) values ('alice', 30)")
cursor.execute("insert into users (name, age) values ('bob', 25)")
# 提交事务
conn.commit()
4.4 查询数据
# 查询数据
cursor.execute("select * from users")
print(cursor.fetchall())
4.5 更新/删除数据
# 更新数据
cursor.execute("update users set age = 31 where name = 'alice'")
# 删除数据
cursor.execute("delete from users where name = 'bob'")
# 提交事务
conn.commit()
4.6 关闭数据库连接
# 关闭 cursor 和 connection cursor.close() conn.close()
注意事项
- 异常处理:在进行数据库操作时,使用 try...except语句处理异常是一个好习惯。
- 事务管理:使用 commit()来保存更改,使用rollback()来撤销未提交的事务。
- 数据库安全:避免 sql 注入攻击,最好使用参数化查询。
5 实例演示
以下是一个使用 python 中的 sqlite3 模块来操作 sqlite 数据库的完整示例。这个例子将展示如何连接到数据库、创建表、插入、查询、更新、删除数据,并最终关闭数据库连接。我们将这些操作封装在一个名为 sqlite_example.py 的 python 文件中。
# sqlite_example.py
import sqlite3
def create_connection(db_file):
    """ 创建数据库连接 """
    conn = none
    try:
        conn = sqlite3.connect(db_file)
        return conn
    except sqlite3.error as e:
        print(e)
    return conn
def create_table(conn):
    """ 创建表 """
    try:
        cursor = conn.cursor()
        cursor.execute('''create table if not exists users
                        (id integer primary key, name text, age integer)''')
    except sqlite3.error as e:
        print(e)
def insert_user(conn, user):
    """ 插入新用户 """
    try:
        cursor = conn.cursor()
        cursor.execute("insert into users (name, age) values (?, ?)", user)
        conn.commit()
    except sqlite3.error as e:
        print(e)
def update_user(conn, user):
    """ 更新用户信息 """
    try:
        cursor = conn.cursor()
        cursor.execute("update users set age = ? where name = ?", user)
        conn.commit()
    except sqlite3.error as e:
        print(e)
def delete_user(conn, name):
    """ 删除用户 """
    try:
        cursor = conn.cursor()
        cursor.execute("delete from users where name = ?", (name,))
        conn.commit()
    except sqlite3.error as e:
        print(e)
def select_all_users(conn):
    """ 查询所有用户 """
    try:
        cursor = conn.cursor()
        cursor.execute("select * from users")
        rows = cursor.fetchall()
        for row in rows:
            print(row)
    except sqlite3.error as e:
        print(e)
def main():
    database = "example.db"
    # 创建数据库连接
    conn = create_connection(database)
    # 创建表
    if conn is not none:
        create_table(conn)
        
        # 插入数据
        insert_user(conn, ('alice', 30))
        insert_user(conn, ('bob', 25))
        # 更新数据
        update_user(conn, (35, 'alice'))
        # 查询数据
        print("查询到的所有用户:")
        select_all_users(conn)
        # 删除数据
        delete_user(conn, 'bob')
        # 再次查询数据
        print("\n删除后的用户数据:")
        select_all_users(conn)
        # 关闭数据库连接
        conn.close()
    else:
        print("error! 无法创建数据库连接。")
if __name__ == '__main__':
    main()
   
 """
 控制台输出结果:
查询到的所有用户:
 (1, 'alice', 35)
 (2, 'alice', 35)
 (3, 'bob', 25)
 
 删除后的用户数据:
 (1, 'alice', 35)
 (2, 'alice', 35)
 """
在这个脚本中,我们定义了不同的函数来处理数据库的创建连接、创建表、插入、更新、删除和查询操作。main 函数中整合了这些操作的流程。运行这个脚本将在同目录下创建一个名为 example.db 的 sqlite 数据库文件,并在其中执行了一系列的数据库操作。
tips
可以通过数据库浏览器查询创建的数据库,下载地址:db browser for sqlite官方下载链接

6 总结
sqlite3 提供了一个简单高效的方式来进行数据库操作,非常适合于轻量级应用。python 的 sqlite3 模块使得在 python 中操作 sqlite 数据库变得轻而易举。
到此这篇关于一文搞懂python中轻量型数据库sqlite3的用法的文章就介绍到这了,更多相关python sqlite3内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
 
             我要评论
我要评论 
                                             
                                             
                                             
                                            
发表评论