在 Peewee 中,有多个命令可以在表中添加新记录。我们已经使用了 Model 实例的 save() 方法。
rec1=User(name="Rajesh", age=21)
rec1.save()
Peewee.Model
类还有一个 create() 方法,用于创建一个新实例并将其数据添加到表中。
User.create(name="Kiran", age=19)
除此之外,Model 还有insert()作为构造 SQL 插入查询对象的类方法。Query 对象的execute()方法执在表最后添加一行。
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 提供了两种方法: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()
酷客网相关文章:
评论前必须登录!
注册