- 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 —— 動態定義資料庫
如果計劃在執行時更改資料庫,請使用DatabaseProxy 幫助程式來更好地控制其初始化方式。DatabaseProxy 物件是一個佔位符,藉助該佔位符可以在執行時選擇資料庫。
在以下示例中,會根據應用程式的配置設定選擇適當的資料庫。
from peewee import *
db_proxy = DatabaseProxy() # Create a proxy for our db.
class MyUser (Model):
name=TextField()
city=TextField(constraints=[SQL("DEFAULT 'Mumbai'")])
age=IntegerField()
class Meta:
database=db_proxy
db_table='MyUser'
# Based on configuration, use a different database.
if app.config['TESTING']:
db = SqliteDatabase(':memory:')
elif app.config['DEBUG']:
db = SqliteDatabase('mydatabase.db')
else:
db = PostgresqlDatabase(
'mydatabase', host='localhost', port=5432, user='postgres', password='postgres'
)
# Configure our proxy to use the db we specified in config.
db_proxy.initialize(db)
db.connect()
db.create_tables([MyUser])
您還可以在執行時使用在資料庫類和模型類中同時宣告的bind() 方法,將模型與任何資料庫物件關聯。
以下示例在資料庫類中使用 bind() 方法。
from peewee import *
class MyUser (Model):
name=TextField()
city=TextField(constraints=[SQL("DEFAULT 'Mumbai'")])
age=IntegerField()
db = MySQLDatabase('mydatabase', host='localhost', port=3306, user='root', password='')
db.connect()
db.bind([MyUser])
db.create_tables([MyUser])
bind() 方法也同樣在 Model 類中定義。
from peewee import *
class MyUser (Model):
name=TextField()
city=TextField(constraints=[SQL("DEFAULT 'Mumbai'")])
age=IntegerField()
db = MySQLDatabase('mydatabase', host='localhost', port=3306, user='root', password='')
db.connect()
MyUser.bind(db)
db.create_tables([MyUser])
廣告