
- Peewee 教程
- Peewee - 首页
- Peewee - 概述
- Peewee - 数据库类
- Peewee - 模型
- Peewee - 字段类
- Peewee - 插入新记录
- Peewee - 选择记录
- Peewee - 过滤器
- Peewee - 主键和复合键
- Peewee - 更新现有记录
- Peewee - 删除记录
- Peewee - 创建索引
- Peewee - 约束
- Peewee - 使用 MySQL
- Peewee - 使用 PostgreSQL
- Peewee - 动态定义数据库
- Peewee - 连接管理
- Peewee - 关系和连接
- Peewee - 子查询
- Peewee - 排序
- Peewee - 计数和聚合
- Peewee - SQL 函数
- Peewee - 检索行元组/字典
- Peewee - 用户定义的操作符
- Peewee - 原子事务
- Peewee - 数据库错误
- Peewee - 查询构建器
- Peewee - 与 Web 框架集成
- Peewee - SQLite 扩展
- Peewee - PostgreSQL 和 MySQL 扩展
- Peewee - 使用 CockroachDB
- Peewee 有用资源
- Peewee - 快速指南
- Peewee - 有用资源
- Peewee - 讨论
Peewee - 插入新记录
在 Peewee 中,有多种命令可以向表中添加新记录。我们已经使用了 Model 实例的 save() 方法。
rec1=User(name="Rajesh", age=21) rec1.save()
Peewee.Model 类还有一个 create() 方法,它创建一个新实例并将数据添加到表中。
User.create(name="Kiran", age=19)
此外,Model 还具有 insert() 作为类方法,它构造 SQL insert 查询对象。查询对象的 execute() 方法执行向底层表中添加一行。
q = User.insert(name='Lata', age=20) q.execute()
查询对象等效于 INSERT 查询。q.sql() 返回查询字符串。
print (q.sql()) ('INSERT INTO "User" ("name", "age") VALUES (?, ?)', ['Lata', 20])
以下是演示上述插入记录方法的完整代码。
from peewee import * db = SqliteDatabase('mydatabase.db') class User (Model): name=TextField() age=IntegerField() class Meta: database=db db_table='User' db.create_tables([User]) rec1=User(name="Rajesh", age=21) rec1.save() a=User(name="Amar", age=20) a.save() User.create(name="Kiran", age=19) q = User.insert(name='Lata', age=20) q.execute() db.close()
我们可以在 SQLiteStudio GUI 中验证结果。

批量插入
为了同时在表中使用多行,Peewee 提供了两种方法:bulk_create 和 insert_many。
insert_many()
insert_many() 方法生成等效的 INSERT 查询,使用字典对象的列表,每个字典对象都包含一个对象的字段值对。
rows=[{"name":"Rajesh", "age":21}, {"name":"Amar", "age":20}] q=User.insert_many(rows) q.execute()
同样,q.sql() 返回的 INSERT 查询字符串如下所示:
print (q.sql()) ('INSERT INTO "User" ("name", "age") VALUES (?, ?), (?, ?)', ['Rajesh', 21, 'Amar', 20])
bulk_create()
此方法采用一个列表参数,该参数包含一个或多个未保存的模型实例,这些实例映射到一个表。
a=User(name="Kiran", age=19) b=User(name='Lata', age=20) User.bulk_create([a,b])
以下代码使用这两种方法执行批量插入操作。
from peewee import * db = SqliteDatabase('mydatabase.db') class User (Model): name=TextField() age=IntegerField() class Meta: database=db db_table='User' db.create_tables([User]) rows=[{"name":"Rajesh", "age":21}, {"name":"Amar", "age":20}] q=User.insert_many(rows) q.execute() a=User(name="Kiran", age=19) b=User(name='Lata', age=20) User.bulk_create([a,b]) db.close()
广告