Peewee 插入新记录
在 Peewee 中,有多个命令可以在表中添加新记录。我们已经使用了 Model 实例的 save() 方法。
rec1=User(name="Rajesh", age=21) rec1.save()
Peewee.Model 类还有一个 create() 方法,该方法创建一个新实例并将其数据添加到表中。
User.create(name="Kiran", age=19)
除此之外,Model 还有 insert() 作为构造 SQL 插入查询对象的类方法。这 执行() Query 对象的方法执行在基础表中添加一行。
q = User.insert(name='Lata', age=20) q.execute()
查询对象是等效的 INSERT query.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 提供了两种方法: 批量创建 和 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])
批量创建()
此方法采用一个列表参数,该参数包含一个或多个映射到表的模型的未保存实例。
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()