当前位置:首页>python>Python数据库教程03:字典数据保存到sqlite3示例

Python数据库教程03:字典数据保存到sqlite3示例

  • 2026-08-22 23:49:33
Python数据库教程03:字典数据保存到sqlite3示例

Python,速成心法

敲代码,查资料,问Ai

练习,探索,总结,优化

★★★★★博文创作不易,我的博文不需要打赏,也不需要知识付费,可以白嫖学习编程小技巧。使用代码的过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以多多点赞+收藏分享+置顶,小红牛在此表示感谢。★★★★★

------★数据库精选教程列表★-------

Python数据库教程: SQLite3增删改查操作(tkinter)

Python项目源码57:数据格式转换工具1.0(csv+json+excel+sqlite3)

Python项目源码69:Excel数据筛选器1.0(tkinter+sqlite3+pandas)

Python数据库教程02:sqlite3批量删除+某字段数据内容替换(tkinter)

以下是完整的 Python 代码,包含创建 SQLite 数据库、插入李白杜甫等诗人的字典数据,以及查询时以字典形式显示结果。代码可直接复制运行,并附有详细注释。

代码特点

数据准备:使用字典列表存储诗人信息,清晰直观。
建表与插入:采用 executemany 批量插入,DROP TABLE 确保每次运行都是全新数据(方便调试)。
字典形式查询:通过设置 conn.row_factory = sqlite3.Row,查询结果行支持 row['字段名'] 访问,也可用 dict(row) 转换为普通字典。
异常处理:包含 try-except 捕获数据库错误,并回滚事务。
你可以根据需要修改 poets_data 或扩展表结构。

↓ 完整源码如下 ↓

# -*- coding: utf-8 -*-# @Author : 小红牛# 微信公众号:wdPythonimport sqlite3# 诗人数据列表(每个诗人用一个字典表示)poets_data = [    {        "name": "李白",        "dynasty": "唐",        "birth_year": 701,        "death_year": 762,        "representative_work": "静夜思",        "biography": "字太白,号青莲居士,唐代伟大的浪漫主义诗人。"    },    {        "name": "杜甫",        "dynasty": "唐",        "birth_year": 712,        "death_year": 770,        "representative_work": "春望",        "biography": "字子美,自号少陵野老,唐代伟大的现实主义诗人。"    },    {        "name": "王维",        "dynasty": "唐",        "birth_year": 701,        "death_year": 761,        "representative_work": "山居秋暝",        "biography": "字摩诘,号摩诘居士,唐代著名诗人、画家。"    },    {        "name": "白居易",        "dynasty": "唐",        "birth_year": 772,        "death_year": 846,        "representative_work": "长恨歌",        "biography": "字乐天,号香山居士,唐代伟大的现实主义诗人。"    }]def setup_database(db_name="poets.db"):    """创建数据库、建表并插入初始数据"""    # 连接数据库(如果文件不存在会自动创建)    conn = sqlite3.connect(db_name)    cursor = conn.cursor()    try:        # 如果表已存在则删除(确保每次运行数据都是新的,适合调试)        cursor.execute("DROP TABLE IF EXISTS poets")        # 创建 poets 表        cursor.execute('''            CREATE TABLE poets (                id INTEGER PRIMARY KEY AUTOINCREMENT,                name TEXT NOT NULL,                dynasty TEXT,                birth_year INTEGER,                death_year INTEGER,                representative_work TEXT,                biography TEXT            )        ''')        # 将字典列表转换为元组列表(字段顺序必须与 INSERT 语句一致)        data_tuples = [            (                poet["name"],                poet["dynasty"],                poet["birth_year"],                poet["death_year"],                poet["representative_work"],                poet["biography"]            )            for poet in poets_data        ]        # 批量插入数据(使用参数化查询,防止 SQL 注入)        cursor.executemany('''            INSERT INTO poets (name, dynasty, birth_year, death_year, representative_work, biography)            VALUES (?, ?, ?, ?, ?, ?)        ''', data_tuples)        conn.commit()        print(f"成功插入 {len(data_tuples)} 条诗人记录。")    except sqlite3.Error as e:        print(f"数据库错误: {e}")        conn.rollback()    finally:        conn.close()def query_as_dict(db_name="poets.db"):    """查询数据并以字典形式显示"""    # 连接数据库    conn = sqlite3.connect(db_name)    # 设置 row_factory 为 sqlite3.Row,使行对象支持字段名索引(类似字典)    conn.row_factory = sqlite3.Row    cursor = conn.cursor()    try:        cursor.execute("SELECT * FROM poets")        rows = cursor.fetchall()        print("\n诗人列表(字典形式访问):")        for row in rows:            # 直接通过字段名访问(像字典一样)            print(f"ID: {row['id']}, 姓名: {row['name']}, 朝代: {row['dynasty']}, "                  f"生卒: {row['birth_year']}-{row['death_year']}, 代表作: {row['representative_work']}")            # 如果需要真正的字典对象,可以使用 dict(row)            poet_dict = dict(row)            print(f"  完整字典数据: {poet_dict}\n")    except sqlite3.Error as e:        print(f"查询错误: {e}")    finally:        conn.close()if __name__ == "__main__":    # 1. 创建数据库并插入数据    setup_database()    # 2. 查询数据并显示字典形式的结果    query_as_dict()

完毕!!感谢您的收看

------★★历史博文集合★★------

Python入门篇  进阶篇  视频教程  Py安装

py项目Python模块 Python爬虫  Json

Xpath正则表达式SeleniumEtreeCss

Gui程序开发TkinterPyqt5 列表元组字典

数据可视化 matplotlib 词云图Pyecharts

海龟画图PandasBug处理电脑小知识

自动化脚本编程工具NumPy CSVWeb

Pygame  图像处理  机器学习数据库

最新文章

随机文章