
- 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()
廣告