

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 数据库、插入李白杜甫等诗人的字典数据,以及查询时以字典形式显示结果。代码可直接复制运行,并附有详细注释。

代码特点
↓ 完整源码如下 ↓
# -*- 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.Rowcursor = 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()
完毕!!感谢您的收看
------★★历史博文集合★★------
